<context:annotation-config>
Nur löst die @Autowired
y @Qualifer
Anmerkungen, das ist alles, es geht um die Injektion von Abhängigkeiten Es gibt noch andere Anmerkungen, die die gleiche Aufgabe erfüllen, ich denke, wie @Inject
sondern alles über die Auflösung von DI durch Anmerkungen.
Beachten Sie, dass Sie, auch wenn Sie die <context:annotation-config>
Element, müssen Sie erklären, dass Ihre Klasse, wie eine Bohne sowieso, denken Sie daran, wir haben drei Optionen zur Verfügung
- XML:
<bean>
- @Anmerkungen: @Komponente, @Dienst, @Repository, @Controller
- JavaConfig: @Konfiguration, @Bean
Jetzt mit
<context:component-scan>
Sie erfüllt zwei Aufgaben:
- Es durchsucht alle Klassen, die mit @Component, @Service, @Repository, @Controller und @Configuration annotiert sind und erstellt eine Bean
- Sie erfüllt dieselbe Aufgabe wie
<context:annotation-config>
tut.
Wenn Sie also erklären, dass <context:component-scan>
nicht mehr notwendig ist, zu erklären <context:annotation-config>
auch.
Das ist alles
Ein häufiges Szenario war zum Beispiel die Deklaration einer Bean über XML und die Auflösung der DI über Annotationen, zum Beispiel
<bean id="serviceBeanA" class="com.something.CarServiceImpl" />
<bean id="serviceBeanB" class="com.something.PersonServiceImpl" />
<bean id="repositoryBeanA" class="com.something.CarRepository" />
<bean id="repositoryBeanB" class="com.something.PersonRepository" />
Wir haben nur die Bohnen deklariert, nichts über <constructor-arg>
y <property>
wird die DI in ihren eigenen Klassen durch @Autowired konfiguriert. Das bedeutet, dass die Dienste @Autowired für ihre Repositories-Komponenten verwenden und die Repositories @Autowired für die Komponenten JdbcTemplate, DataSource usw. verwenden.