Welchen Unterschied macht @EnableConfigurationproperties machen wenn eine bean ist bereits annotiert mit @ConfigurationProperties?
Die Spring-Boot-Dokumentation sagt, dass die Verwendung der @ConfigurationProperties
annotation
Müssen Sie auch die Liste der Eigenschaften, die Klassen, um sich in den
@EnableConfigurationProperties
annotation, wie im folgenden gezeigt
Beispiel:
und gibt diesen code ein:
@Configuration
@EnableConfigurationProperties(AcmeProperties.class)
public class MyConfiguration {
}
Aber im nächsten Absatz sagt:
Selbst wenn die Vorherige Konfiguration, erstellt eine regelmäßige bean für
AcmeProperties, empfehlen wir, dass@ConfigurationProperties
nur
mit der Umwelt und insbesondere nicht in andere beans injizieren
aus dem Kontext. Having said that, die@EnableConfigurationProperties
Anmerkung wird auch automatisch angewandt, um Ihr Projekt so, dass alle
vorhandene bean annotiert mit @ConfigurationProperties konfiguriert ist
aus der Umgebung
Darauf hindeutet, dass du eine @ConfigurationProperties
bean unter einer @EnableConfigurationProperties
Anmerkung ist nicht notwendig.
Also, was ist es? Experimentell habe ich gesehen, dass wenn ich kommentieren bean mit @ConfigurationProperties
bekommt es Eigenschaften injiziert, um es, wie erwartet, ohne dass die Liste in @EnableConfigurationProperties
, aber wenn dies der Fall ist, warum dann Liste alles, was ein @ConfigurationProperties
annotation unter @EnableConfigurationProperties
, wie gezeigt in der Doku? Macht es einen Unterschied?
@EnableConfigurationProperties
ist obligatorischWenn ich das richtig verstehe, das erklärt, warum müssen Sie
@EnableConfigurationProperties
auf eine configuration-Klasse, aber nicht der Grund, warum Sie benötigen, um ihm eine Liste mit Klassen versehen mit @Configurationproperties
z.B. @EnableConfigurationProperties(AcmeProperties.class)
wenn AcmeProperties ist bereits versehen mit @ConfigurationProperties
InformationsquelleAutor J Person | 2018-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
M. Deinum genannte
@EnableConfigurationProperties
Ist für die Aktivierung der Unterstützung von@ConfigurationProperties
. Wenn Sie einen Blick auf die annotation von Java-Doc können Sie sehen:Zum Beispiel, sagen wir, Sie haben eine Klasse, deren Aufgabe ist es, zu Lesen und speichern Informationen von Ihrem
application.yml
/application.properties
, die erforderlich ist, um eine Verbindung zu verschiedenen Datenbanken. Sie versehen es mit@ConfigurationProperties
.Dann, Sie haben in der Regel eine
@Configuration
annotierten Klasse, die bietet eineDataSource
@Bean
auf Ihre Bewerbung. Sie können die@EnableConfigurationProperties
zu verknüpfen, um die@ConfigurationProperties
Klasse und init Ihrer Daten-Quellen entsprechend zugeordnet.Hier ist ein kleines Beispiel:
Anwendung.yml
DataSourcesConfiguration
DataSourceConnectionConfiguration
Die
DataSourcesConfiguration.class
ist nicht registriert wie eine Feder@Bean
. Daher, wenn Sie entfernen die@EnableConfigurationProperties
Wert, in diesem FallDataSourcesConfiguration.class
Frühling nicht in der Lage sein, um es zu finden. Wenn Sie das Kontrollkästchen@EnableConfigurationProperties::value()
docs, es sagt, dass es nur ein bequemer Weg für die schnell registrieren@ConfigurationProperties
kommentierte Bohnen. Wir verlassen konnte, die@EnableConfigurationProperties
leer, wenn dieDataSourcesConfiguration
war versehen mit, z.B.,@Component
annotation, welche Register es als Spring-Bean. Hoffe, das hilft!Das hilft, vielen Dank!
InformationsquelleAutor Emanuel Miranda
Es dauerte eine Weile, bis zu diesem post, aber möchte hier hinzufügen, damit andere vielleicht davon profitiert.
@ConfigurationProperties
- Binden einer Klasse an eine externe property-Datei. Sehr mächtig und muss verwendet werden, zu trennen bean-Klassen Konfiguration mit entity-Klasse.@Configuration
- Erstellt eine Spring-bean-Konfiguration Stereotyp.@EnableConfigurationProperties
- Erzeugt eine Bindung zwischen einer Konfiguration entity-Klasse und Spring-Konfiguration Stereotyp, so dass nach der Injektion innerhalb einer service-Eigenschaften können problemlos abgerufen werden.InformationsquelleAutor alpha
Wenn wir betrachten den folgenden code:
@Configuration @EnableConfigurationProperties @ConfigurationProperties(prefix="ar1")
public class ar1Settings { }
@- Konfiguration sagt, Frühling, behandeln Sie dies als eine configuration-Klasse, und registrieren Sie es als eine Bohne
@EnableConfigurationProperties sagt, Frühling, behandeln Sie diese Klasse als ein consumer-Anwendung.yml/Eigenschaften Werte
@ConfigurationProperties erzählt Frühjahrstagung der Sektion in dieser Klasse darstellt.
Mein Verständnis ist, dass, wenn Sie nicht brauchen, um geben Sie den Abschnitt der property-Datei, dann @ConfigurationProperties kann weggelassen werden.
@EnableConfigurationProperties
ist für die Aktivierung der Unterstützung von@ConfigurationProperties
sollte es existiert nur einmal in der Anwendung (ich.e auf Ihrem@SpringBootApplication
es nicht (noch nicht gehört) auf die anderen Klassen).Also, was tun die Klassen gegeben @EnableCOnfigurationProperties als Argumente?
InformationsquelleAutor AR1