XML-definierte Beans im Spring Boot

1. Einleitung

Vor Spring 3.0 war XML die einzige Möglichkeit, Beans zu definieren und zu konfigurieren. In Spring 3.0 wurde JavaConfig eingeführt , mit dem wir Beans mithilfe von Java-Klassen konfigurieren können. XML-Konfigurationsdateien werden jedoch noch heute verwendet.

In diesem Tutorial wird erläutert, wie XML-Konfigurationen in Spring Boot integriert werden .

2. Die Annotation @ImportResource

Mit der Annotation @ImportResource können wir eine oder mehrere Ressourcen importieren, die Bean-Definitionen enthalten.

Angenommen , wir haben eine beans.xml- Datei mit der Definition einer Bean:

Um es in einer Spring Boot-Anwendung zu verwenden, können wir die Annotation @ImportResource verwenden und angeben , wo sich die Konfigurationsdatei befindet:

@Configuration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { @Autowired private Pojo pojo; public static void main(String[] args) { SpringApplication.run(SpringBootXmlApplication.class, args); } }

In diesem Fall wird der Pojo- Instanz die in beans.xml definierte Bean injiziert .

3. Zugriff auf Eigenschaften in XML-Konfigurationen

Was ist mit der Verwendung von Eigenschaften in XML-Konfigurationsdateien? Angenommen, wir möchten eine in unserer Datei application.properties deklarierte Eigenschaft verwenden:

sample=string loaded from properties!

Aktualisieren wir die Pojo- Definition in beans.xml , um die Beispieleigenschaft einzuschließen :

Lassen Sie uns als Nächstes überprüfen, ob die Eigenschaft ordnungsgemäß enthalten ist:

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

Leider schlägt dieser Test fehl, da die XML-Konfigurationsdatei standardmäßig keine Platzhalter auflösen kann . Wir können dies jedoch lösen, indem wir die Annotation @EnableAutoConfiguration einfügen :

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

Diese Anmerkung aktiviert die automatische Konfiguration und versucht, Beans zu konfigurieren.

4. Empfohlener Ansatz

Wir können weiterhin XML-Konfigurationsdateien verwenden. Wir können jedoch aus mehreren Gründen auch in Betracht ziehen, die gesamte Konfiguration auf JavaConfig zu verschieben . Erstens ist die Konfiguration der Beans in Java typsicher , sodass beim Kompilieren Typfehler abgefangen werden. Außerdem kann die XML-Konfiguration sehr umfangreich werden , was die Wartung erschwert.

5. Schlussfolgerung

In diesem Artikel haben wir gesehen, wie XML-Konfigurationsdateien zum Definieren unserer Beans in einer Spring Boot-Anwendung verwendet werden. Wie immer ist der Quellcode des von uns verwendeten Beispiels auf GitHub verfügbar.