Verständnis Frühling @Configuration-Klasse
Folgenden die Frage Verständnis Frühling @Autowired-Nutzung ich wollte eine umfassende Wissensbasis für die andere option des Frühlings Verdrahtung, die @Configuration
Klasse.
Nehmen wir an ich habe ein spring-XML-Datei, die wie folgt aussieht:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<import resource="another-application-context.xml"/>
<bean id="someBean" class="stack.overflow.spring.configuration.SomeClassImpl">
<constructor-arg value="${some.interesting.property}" />
</bean>
<bean id="anotherBean" class="stack.overflow.spring.configuration.AnotherClassImpl">
<constructor-arg ref="someBean"/>
<constructor-arg ref="beanFromSomewhereElse"/>
</bean>
</beans>
Wie kann ich @Configuration
statt? Hat es irgendeine Auswirkung auf den code selbst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Migrieren von XML zu
@Configuration
Ist es möglich, die Migration der xml-Code in eine
@Configuration
in wenigen Schritten:Erstellen Sie eine
@Configuration
annotierten Klasse:Für jeden
<bean>
- tag erstellen Sie eine Methode annotiert mit@Bean
:Importieren
beanFromSomewhereElse
wir brauchen, um es zu importieren der definition. Es kann festgelegt werden, in eine XML-und die werden wir nutzen@ImportResource
:Wenn die bean definiert ist, in einem anderen
@Configuration
Klasse, die wir verwenden können, die@Import
Anmerkung:Nachdem wir importierten die anderen XMLs oder
@Configuration
Klassen, können wir die Bohnen, die Sie erklären, in unserem Zusammenhang durch die Deklaration einer privaten member der@Configuration
- Klasse wie folgt:Oder verwenden Sie es direkt als parameter in der Methode definiert die Bohne, dass hängt dieses
beanFromSomewhereElse
mit@Qualifier
wie folgt:Import Eigenschaften ist sehr ähnlich zu importieren bean aus einem anderen xml-oder
@Configuration
Klasse. Anstelle der Verwendung von@Qualifier
verwenden wir@Value
mit Eigenschaften wie folgt:Kann dies mit verwendet werden SpEL Ausdruck an.
Damit die Feder zur Behandlung von solchen Klassen als beans Container, die wir brauchen, um das zu markieren, die in unserer Haupt-xml, indem Sie diesen tag in der Kontext:
Können Sie jetzt importieren
@Configuration
Klassen genau das gleiche wie erstellen Sie eine einfache bean:Gibt es Möglichkeiten, zu vermeiden, spring-XML-Dateien zusammen, aber Sie sind nicht in den Rahmen dieser Antwort. Finden Sie eine dieser Optionen in meinem blog-post auf die ich mich stützen meine Antwort.
Die Vorteile und Nachteile der Verwendung dieser Methode
Grundsätzlich finde ich diese Methode zu deklarieren, Bohnen viel bequemer als die Verwendung von XML-Dateien durch ein paar Vorteile sehe ich:
@Configuration
Klassen sind kompiliert und Tippfehler einfach nicht erlauben ZusammenstellungenDie Nachteile sind nicht viele so wie ich Sie sehe, aber es gibt ein paar, die ich mir vorstellen könnte:
@Configuration
Klassen müssen Sie über die verfügbaren Klassen zur compile-Zeit. In der Regel ist das kein Problem, aber es gibt Fälle, kann es werden.Bottom line: Es ist völlig in Ordnung, zu kombinieren, XMLs,
@Configuration
und Anmerkungen in Ihrem Anwendungskontext. Der Frühling kümmert sich nicht um die Methode einer bean deklariert.@Component
@Service
oder sonstige Anmerkungen würde automatisch in eine bean (aber das war nicht der Fokus dieser Frage)