Spring Boot:具有不同前缀的多个类似ConfigurationProperties
作者:互联网
我正在使用Spring Boot并且有两个非常相似的服务,我想在我的application.yml中配置它.
配置看起来大致如下:
serviceA.url=abc.com
serviceA.port=80
serviceB.url=def.com
serviceB.port=8080
是否可以创建一个使用@ConfigurationProperties注释的类并在注入点设置前缀?
例如
@Component
@ConfigurationProperties
public class ServiceProperties {
private String url;
private String port;
// Getters & Setters
}
然后在服务本身:
public class ServiceA {
@Autowired
@SomeFancyAnnotationToSetPrefix(prefix="serviceA")
private ServiceProperties serviceAProperties;
// ....
}
不幸的是,我没有在文档中找到有关此类功能的内容…非常感谢您的帮助!
解决方法:
我做的几乎和你想的一样.
首先,注册每个属性bean.
@Bean
@ConfigurationProperties(prefix = "serviceA")
public ServiceProperties serviceAProperties() {
return new ServiceProperties ();
}
@Bean
@ConfigurationProperties(prefix = "serviceB")
public ServiceProperties serviceBProperties() {
return new ServiceProperties ();
}
并且在服务(或将使用属性的某个地方)放置@Qualifier并指定哪个属性将自动连线.
public class ServiceA {
@Autowired
@Qualifier("serviceAProperties")
private ServiceProperties serviceAProperties;
}
标签:spring,spring-boot-2,spring-config 来源: https://codeday.me/bug/20190701/1347427.html