È possibile avere campi (finali) immutabili con l'annotazione @ConfigurationProperties
di Spring Boot? Esempio di sottoImmutable @ConfigurationProperties
@ConfigurationProperties(prefix = "example")
public final class MyProps {
private final String neededProperty;
public MyProps(String neededProperty) {
this.neededProperty = neededProperty;
}
public String getNeededProperty() { .. }
}
Approcci ho provato finora:
- Creazione di un
@Bean
della classeMyProps
con due costruttori- fornendo due costruttori: vuoti e con
neededProperty
argomento - Il bean è stato creato con
new MyProps()
- Risultati sul campo essendo
null
- fornendo due costruttori: vuoti e con
- Utilizzando
@ComponentScan
e@Component
per fornire il fagioloMyProps
.- Risultati in
BeanInstantiationException
->NoSuchMethodException: MyProps.<init>()
- Risultati in
L'unico modo che ho ottenuto che funziona è quello di fornire getter/setter per ogni campo non-finale.
A mia conoscenza, quello che sei provare a fare non funzionerà fuori dalla scatola. – geoand
Questo è triste.Ovviamente, posso sempre farlo con Spring semplice usando i parametri del costruttore con l'annotazione '@ Value'. Tuttavia, sarebbe bello se Spring Boot supportasse anche questo. – RJo
Ho preso un piccolo picco nel codice sorgente, ma non è banale da sostenere qualcosa come quello che stai chiedendo. Naturalmente non sono un esperto di interni di Spring quindi potrei mancare qualcosa di ovvio – geoand