Configuración de un enum en la primavera usando application.properties

D.Tomov:

Tengo la siguiente enumeración:

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;
    }
}

Quiero fijar la variable diferente someNumber para ambas instancias de la enumeración utilizando el archivo application.properties. ¿Es esto posible y si no, ¿debería dividir en dos clases usando una clase / interfaz abstracta a la producción?

danielh :

No se puede / no debe cambiar los valores de una enumeración en Java. Trate de usar una clase en su lugar:

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
}

De crear una costumbre 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
}

Ahora puede cambiar los valores de my.config.name.someNumbery my.config.fame.someNumberen el archivo application.properties. Si quiere desactivar el cambio de minúsculas / atitude hacerlos final.

Antes de poder usarlo hay que anotar una @Configurationclase con @EnableConfigurationProperties(MyConfigConfigurationProperties.class). También añadir el org.springframework.boot:spring-boot-configuration-processorcomo una dependencia opcional para una mejor IDE de apoyo.

Si desea acceder a los valores:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=188880&siteId=1
Recomendado
Clasificación