Ist es möglich, unveränderliche (endgültige) Felder mit Spring Booths @ConfigurationProperties
Annotation zu haben? Beispiel untenImmutable @ConfigurationProperties
@ConfigurationProperties(prefix = "example")
public final class MyProps {
private final String neededProperty;
public MyProps(String neededProperty) {
this.neededProperty = neededProperty;
}
public String getNeededProperty() { .. }
}
Ansätze habe ich bisher versucht:
- eine
@Bean
derMyProps
Klasse Erstellen mit zwei Konstrukteuren- zwei Konstrukteurs Providing: leer und mit
neededProperty
Argument - Die Bean wird erstellt mit
new MyProps()
- Ergebnisse im Bereich sein
null
- zwei Konstrukteurs Providing: leer und mit
- Mit
@ComponentScan
und@Component
dieMyProps
Bohne zur Verfügung zu stellen.- Ergebnisse in
BeanInstantiationException
->NoSuchMethodException: MyProps.<init>()
- Ergebnisse in
Der einzige Weg, ich habe habe es funktioniert, indem Sie für jedes nicht-Endfeld Getter/Setter bereitstellt.
Mein Wissen helfen, was du bist zu versuchen, wird nicht aus der Box funktionieren. – geoand
Das ist traurig.Natürlich kann ich das immer mit einfachem Spring machen, indem ich Konstruktor-Parameter mit '@ Value' Annotation verwende. Es wäre jedoch schön, wenn Spring Boot dies auch unterstützen würde. – RJo
Ich habe einen kleinen Blick auf den Quellcode genommen, aber es scheint nicht-trivial zu sein, etwas zu unterstützen, was Sie fragen. Natürlich bin ich kein Experte für Spring Internals, also könnte mir etwas offensichtlich fehlen – geoand