【问题标题】:populate enum fields with application.properties and java configuration使用 application.properties 和 java 配置填充枚举字段
【发布时间】:2022-02-04 01:13:08
【问题描述】:

使用 spring xml 配置,可以在应用上下文 xml 中定义以下内容来填充TestEnum 中的状态字段:

应用上下文 xml

    <bean id="blue" class="com.example.demo.test.TestEnum" factory-method="valueOf">
        <property name="status" value="${testnum.blue.status}"/>
        <constructor-arg>
            <value>BLUE</value>
        </constructor-arg>
    </bean>
    <bean id="red" class="com.example.demo.test.TestEnum" factory-method="valueOf">
        <property name="status" value="${testnum.red.status}"/>
        <constructor-arg>
            <value>RED</value>
        </constructor-arg>
    </bean>

枚举类


public enum TestEnum {
    
    BLUE,
    RED;
    
    private String status;
    
    public String getStatus() {
        return status;
    }
    
    public void setStatus(String status) {
        this.status = status;
    }
}

mystatus.properties

testnum.blue.status=good
testnum.red.status=bad

在没有xml的情况下使用application.properties + java配置的spring boot可以实现吗?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    是的,一个简单的环境配置类(例如用@ConfigurationProperties注解)会自动映射和转换你的枚举。

    例子:

    @Configuration
    @Validated
    @ConfigurationProperties(prefix = "my.property.path")
    public class TestConfiguration{
    
        public enum TestEnum {
            BLUE, RED
        }
    
        @NotNull
        private TestEnum type;
    
        public TestConfiguration() {
        }
    
        public @NotNull TestEnum getType() {
            return this.type;
        }
    
        public void setType(@NotNull TestEnum type) {
            this.type = type;
        }
    }
    

    【讨论】:

    • 感谢您的回复。您能否展示如何在 application.properties 中使用redblue 定义my.property.path
    • bluered 可以是 TestEnum 中的字段而不是单独的类吗?
    • 在问题中,private String color; 是枚举的一部分,而不是外部 TestConfiguration
    • 我的例子不是很好,我会把color字段改成别的,这样更清楚
    • 好的,对不起,我在这种情况下的属性路径是“my.property.path.type=RED”
    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多