我必须在Springboot java应用程序中的多个位置调用外部api。外部api将始终只返回静态常量字符串值。
请查找下面的示例代码,以便更好地解释我的意图以及我希望在一天结束时实现的目标
我的示例代码使用RestTemplate调用外部api来检索字符串值。
ResponseEntity<String> result = new RestTemplate().exchange("http://localhost:7070/api/test/{id}",
HttpMethod.GET, entity, String.class, id);
JSONObject jsonResponse = new JSONObject(result.getBody());
String reqVal = jsonResponse.getString("reqKey");
现在,我的目的是使这个字符串在应用程序中全局可用,以避免多次调用这个api。
我正在考虑在应用程序启动时调用这个扩展api,并在Springboot应用程序上下文中设置这个字符串值,以便可以从应用程序的任何位置检索它。
有人能建议,我如何才能达到上述要求?或者还有其他更好的选择吗?
提前感谢!
我将它存储在调用外部API的Spring托管Bean中的内存中,然后允许任何其他Spring托管Bean从此组件获取它。
@Service
public class ThirdPartyServiceClient implements ApplicationListener<ContextRefreshedEvent> {
private String reqKey = null;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
(...)
ResponseEntity<String> result = new RestTemplate()
.exchange("http://localhost:7070/api/test/{id}", HttpMethod.GET, entity, String.class, id);
JSONObject jsonResponse = new JSONObject(result.getBody());
this.reqKey = jsonResponse.getString("reqKey");
}
public String getKey() {
return reqKey;
}
}
现在,您只需将第三方服务客户机(ThirdPartyServiceClient)注入任何其他Spring托管bean中,就可以调用getKey()方法。
问题内容: 我有一个Spring应用程序,到目前为止运行良好。现在,我希望属性文件位于外部配置文件夹中,而不是在打包的jar中,而无需重新打包即可更改内容。这就是我得到的: 问题答案: 如果将其放置在名为spring的目录中的类路径中的某个位置(相应地更改名称/目录),则可以使用 这将指向web-inf / classes / config / springcontext.properties
Mac OSx(Macbook Pro M1,Monterey 12.3)上的Java(8和17)认为外部USB驱动器不可读。这曾经奏效,相信问题始于12.3的安装。下面的测试例程显示了两个文件(..)。canRead()和文件。可阅读(…)返回false。所有其他应用程序(Finder、terminal、Time Machine)都使用相同的驱动器,没有任何问题。问题报告提交给了苹果,但还有其他
我需要在Google App Engine(Python 2.7)上读取5Mb文件并经常使用它。 在GAE中读取文件并不困难:用Python在应用引擎上读取文件? 困难的部分是把它存储在某个地方,这样我就可以尽可能快地频繁地访问它。它是5MB,因此超过了1MB的数据存储项限制。 我考虑使用BrBoSt店,但恐怕不够快。读Blobstore比读文件快吗? 我正在考虑把整个文件放到memcache中。
我的应用程序有存储在applicaion.yml文件中的嵌套属性。 我希望在应用程序启动时将这些属性映射到POJO。 application.yml: 为了实现这一点,我使用了以下注释: @configuration @enableConfigurationProperties @configurationProperties(“demo”) 类演示: 主类 但是我在O/P下面: 步骤1 名称:D
每个人都知道如果我们想要读取属性文件,我们可以这样做: 但是,现在我有了一个类似于SpringBoot的框架。它可以将Spring与Mybatis集成在一起。 问题是前面的代码只能读取我的项目类路径文件,但我需要使用我的框架读取project属性文件。我是怎么做的?
我正在开发一个将部署在pivotal cloud foundry中的Spring Boot应用程序,它需要读取/侦听来自Websphere MQ的消息。有办法做到这一点吗?