【发布时间】:2021-11-09 20:24:04
【问题描述】:
我必须在我的 Springboot java 应用程序中的多个位置调用外部 api。外部 api 将始终返回一个静态常量 String 值。
请在下面找到示例代码,以更好地解释我的意图以及我希望在一天结束时实现的目标
我的示例代码使用 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 应用程序上下文中设置这个 String 值,以便可以从应用程序的任何地方检索它。
任何人都可以建议,我怎样才能达到我的上述要求? 或者还有其他更好的选择吗?
提前致谢!
【问题讨论】:
-
我会将它存储在 Spring 管理的 Bean 的内存中,该 Bean 调用外部 API,然后允许任何其他 Spring 管理的 Bean 从该组件中获取它。这可以接受吗?
-
对我来说听起来是个好主意,并且可能在该 bean 中的 @PostConstruct 注释方法中调用 API。
-
感谢 Joao 和 Chris。你的两个建议都很有帮助
标签: java spring-boot global-variables resttemplate applicationcontext