java - 在 Spring Boot 中加载外部库的配置
问题描述
我有一个弹簧启动应用程序(微服务)。我必须在此服务中使用外部库。
外部库如下:
public class ExternalConfig {
private String config1;
private boolean config2;
}
public class ExternalService {
private ExternalConfig config;
public ExternalService(ExternalConfig config) {
this.config = config;
}
public void performSomeAction() {
}
}
现在,这个库没有用任何 spring 注释进行注释。在我的spring应用程序中,我有一个配置和用法如下:
public class Config {
@Value("${abc.config1}")
private String config1;
@Value("${abc.config2}")
private String config2;
// How do I load the config from the application.properties.
private ExternalConfig externalConfig;
}
@Service
@ComponentScan
public class ExternalLibraryService {
private ExternalService externalService;
public ExternalLibraryService(ExternalConfig config) {
externalService = new ExternalService(config);
}
public void doSomething() {
.
.
externalService.performSomeAction();
.
.
}
}
我的 application.properties 如下:
# ABC Config
abc.config1=value1
abc.config2=value2
# External Config
external.config1=exvalue1
external.config2=true
现在如何将配置加载到外部库?一种可能的方法是使用我的 spring 应用程序扩展ExternalConfig并加载它。我想知道spring boot中是否有办法加载这些。
解决方案
您可以创建一个ExternalConfig
作为弹簧豆。
像这样的东西
@Bean
public ExternalConfig externalConfig(@Value("${external.config1}") String config1,
@Value("${external.config2}") boolean config2) {
return new ExternalConfig(config1, config2);
}
推荐阅读
- javascript - 如果所选日期是当前日期,则设置最小时间值
- firebase-realtime-database - 我可以更改firebase中孩子的顺序吗
- bash - 如何在特定的行和列打开文件?
- websocket - 如何使用 boost weboscket 设置子协议
- objective-c - 如何将字符串转换为驼峰式
- python - Python:For循环在第一次迭代后停止向字典添加项目
- python - 使用 pandas 从索引和值返回列名
- python - 集合不能有集合作为元素吗?
- node.js - 从 Shopify Storefront API 检索数据
- javascript - 试图弄清楚如何在 Vue.js 中访问环境变量