Page tree
Skip to end of metadata
Go to start of metadata
Inhalt

Verweise

 

STATUS

Einleitung

Seit Spring 3.0 gibt es die Möglichkeit Spring vollständig Java-basiert ohne XML zu konfigurieren. Dabei gibt es eine explizite Konfiguration und eine implizite. Explizit heißt, die Konfigurationsklassen werden mit einer @Configuration Annotation versehen. Implizit heißt, die Konfiguration finden in einer Klasse statt, die nicht mit der @Configuration Annotation versehen ist. Hier sind Konfiguration von Beziehungen limitiert.

Spring - Maven - Konfiguration

Um Spring zu nutzen kann folgende Maven POM Konfiguration genutzt werden:

 

Basiskonfiguration

Allgemein werden Beans mit der @Beans Annotation innerhalb einer Konfigurationsklasse vereinbart.

Spring Konfigurationsklasse

Der Applikationskontext kann nun einfach konstruiert werden:

Component Scan

Normalerweise möchte man die Beans nicht programmatisch aus dem Context lesen (MyService myService = ctx.getBean(MyService.class);), sondern über Annotationen binden. Für @Autowired gibt es die Möglichkeit ein Package für den Component Scan zu definieren. Dieses geschieht wie folgt:

Initialisierung und Freigabe von Ressourcen

Über die Parameter initMethod und destroyMethod ist es möglich Methoden zu definieren, die bei Initialisierung und Finalisierung der Bean automatisch aufgerufen werden. Alternativ dazu können Lifecycle Events genutzt werden.

Scope von Beans

Die Scopes von Beans können ebenfalls über eine @Scope Annotation angegeben werden. Der Default Scope ist singleton.

Java Konfigurationen mit XML Konfigurationen kombinieren

Tatsächlich ist es sehr einfach möglich XML- und Java-basierte Konfigurationen zu mixen. Hier ein Beispiel:

Dazu muss in der XML Konfiguration die Konfiguration über Annotation enabled werden:

Weil jede @Configuration Annotation automatisch mit @Component "meta-annotiert" ist, werden alle Bean-Konfigurationen in der Java-basierten Konfiguration auf diese Weise auch gefunden.

Tests mit Java-basierter Konfiguration

Der Test mit dieser Konfiguration sieht ähnlich aus, wie Tests mit anderen Konfigurationen.

Die Alternativen sind:

Classpath based: @ContextConfiguration("classpath:application.xml")

File based: @ContextConfiguration("file:src/test/resources/application.xml")

 

 

 

 

 

 

 

 

 

 

 

  • No labels