gpt4 book ai didi

java - 使用 application.properties 在 Spring 中配置枚举

转载 作者:搜寻专家 更新时间:2023-11-01 02:57:03 24 4
gpt4 key购买 nike

我有以下枚举:

public enum MyEnum {
NAME("Name", "Good", 100),
FAME("Fame", "Bad", 200);

private String lowerCase;
private String atitude;
private long someNumber;

MyEnum(String lowerCase, String atitude, long someNumber) {
this.lowerCase = lowerCase;
this.atitude = atitude;
this.someNumber = someNumber;
}
}

我想使用 application.properties 文件为枚举的两个实例设置不同的 someNumber 变量。这可能吗?如果不可能,我是否应该使用抽象类/接口(interface)将其分成两个类进行抽象?

最佳答案

您不能/不应该更改 Java 中枚举的值。尝试改用类:

public class MyCustomProperty { 
// can't change this in application.properties
private final String lowerCase;
// can change this in application.properties
private String atitude;
private long someNumber;

public MyCustomProperty (String lowerCase, String atitude, long someNumber) {
this.lowerCase = lowerCase;
this.atitude = atitude;
this.someNumber = someNumber;
}
// getter and Setters
}

比创建自定义ConfigurationProperties :

@ConfigurationProperties(prefix="my.config")
public class MyConfigConfigurationProperties {
MyCustomProperty name = new MyCustomProperty("name", "good", 100);
MyCustomProperty fame = new MyCustomProperty("fame", "good", 100);

// getter and Setters

// You can also embed the class MyCustomProperty here as a static class.
// For details/example look at the linked SpringBoot Documentation
}

现在您可以在 application.properties 文件中更改 my.config.name.someNumbermy.config.fame.someNumber 的值。如果你想禁止更改小写字母/态度,请将它们设为最终。

在使用它之前,您必须使用 @EnableConfigurationProperties(MyConfigConfigurationProperties.class) 注释一个 @Configuration 类。还添加 org.springframework.boot:spring-boot-configuration-processor 作为可选依赖项以获得更好的 IDE 支持。

如果你想访问值:

@Autowired
MyConfigConfigurationProperties config;
...
config.getName().getSumeNumber();

关于java - 使用 application.properties 在 Spring 中配置枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com