我正在使用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;

}

09-11 20:20