我正在使用Spring Boot,并有两个非常相似的服务,我想在其中配置application.yml。
application.yml
配置大致如下所示:
serviceA.url=abc.com serviceA.port=80 serviceB.url=def.com serviceB.port=8080
是否可以创建一个注有注释的类@ConfigurationProperties并在注入点设置前缀?
@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; }