java - 使用同一个类 Spring 多个 @ConfigurationProperties

标签 java spring spring-boot properties

我有一堂这样的课:

@Data
@Component
@ConfigurationProperties("a.config.props")
public class ClientProperties {

    private String hostname;
    private String port;
    private String baseUrl;
    private String endpoint;
}

我有数十个属性上下文,但对于 1 行,我必须重复整个类(class)。有没有一种简单而优雅的方法来拥有一个类并以某种方式动态传递属性上下文(可能是一个数组或类似的东西),以便我使用同一个类。

最佳答案

您可以只用一个类来描述您的众多且相同的属性 block ;

@Data
public class ClientProperties {
    private String hostname;
    private String port;
    private String baseUrl;
    private String endpoint;
}

然后引用它来将该单个类与不同的属性 block 链接起来;

@Configuration
public class PropertyConfigurer {

    @Bean
    @ConfigurationProperties("props.one")
    private ClientProperties propsOne() {
        return new ClientProperties();
    }

    @Bean
    @ConfigurationProperties("props.two")
    private ClientProperties propsTwo() {
        return new ClientProperties();
    }

    @Bean
    @ConfigurationProperties("props.three")
    private ClientProperties propsThree() {
        return new ClientProperties();
    }
}

然后您可以通过它们的方法名称作为限定符来访问它们;

@Component
public class SomeService {

    @Autowired
    private ClientProperties propsOne;
    @Autowired
    private ClientProperties propsTwo;
    @Autowired
    private ClientProperties propsThree;

    ... some logic
}

关于java - 使用同一个类 Spring 多个 @ConfigurationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615063/

相关文章:

java - 我的 DataSource Bean 做错了什么

java - 当 DataSourceAutoConfiguration.class 被排除在自动配置之外时如何注入(inject) spring.datasource.* 属性

java - Spring boot/quartz webapp 不发布 "actuator/quartz"端点

java - 如何在 Spring Boot Jdbc 中指定 MySQL 数据库的默认架构

java - Netbeans IDE 8.02 Java jFrame GUI bulder initComponents 错误

java - 如何在 Netbeans 创建的 Java ME 应用程序中缩放启动屏幕图像

java - SimpleXML,org.simpleframework.xml.core.PersistenceException

java - "NoSuchMethodError"的 Spring MVC 错误

java - spring mvc,css 不工作

spring - OAuth2LoginAuthenticationFilter Spring Security