Spring @Component & @Bean-annotation
Ich glaube @Configuration
Anmerkung, wenn verwendet, in Verbindung mit @Bean
annotation im Frühjahr verwendet wird, zu ersetzen, die xml-Konfiguration. Aber ich sah ein Stück code, wo @Bean
wurde in Verbindung mit @Component
(definiert auf Klassen-Ebene). Ist dies eine gültige Erklärung? Gibt es irgendwelche vor - /Nachteile bei der Verwendung @Component
mit @Bean
annotation vs mit @Configuration
und @Bean
.
EDIT:
Dank @Sundar & @Biju. Ich habe Programmaufruf zwischen 2 bean-Methoden in der Component-Klasse. Ich sah verschiedene Objekt-Werte. Aber wenn ich in der Konfiguration , ich sah den gleichen bean-Werte. Basierend auf dem, was Sie erklärt hatte , nehme ich einen normalen Methodenaufruf gemacht wurde, als ich verwendet @Component
, in der Erwägung, dass, wenn ich @Configuration
, ich nehme an der Methode annotiert mit @Bean
behandelt wurde, als ein Spring-Bean
Code
@Component
public class AppConfig {
@Bean(name="customerService")
public CustomerService getCustomerService(){
System.out.println(getService());
System.out.println(getService());
return getService();
}
@Bean
public CustomerService getService(){
return new CustomerServiceImpl();
}
}
Die Ausgabe Der Konsole
com.company.service.CustomerServiceImpl@68bbe345
com.company.service.CustomerServiceImpl@30b8a058
Code
@Configuration
public class AppConfig {
@Bean(name="customerService")
public CustomerService getCustomerService(){
System.out.println(getService());
System.out.println(getService());
return getService();
}
@Bean
public CustomerService getService(){
return new CustomerServiceImpl();
}
}
Die Ausgabe Der Konsole
com.company.service.CustomerServiceImpl@71623278
com.company.service.CustomerServiceImpl@71623278
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es eine gültige Erklärung, aber es gibt Fänge - der eine in einer
@Component
wird bezeichnet als eine "lite" -Modus und Abhängigkeiten nicht einfach injiziert werden, für Bohnen, erklärte in dieser form. Die Empfehlung ist immer@Bean
im@Configuration
annotierten Klasse - hier ist eine gute Referenz, die auf dieser - http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-java-basic-conceptsKönnen Sie
@Component
als alternative für@Configuration
. Es ist offiziell Vorschlag von Frühling-team.Einfach zu erklären, Ihre
@Bean
Methoden auf Klassen nicht annotiert mit@Configuration
(aber in der Regel mit einer anderen Feder Stereotyp statt, z.B.@Component
). So lange, wie Sie nicht programmgesteuerte Anrufe zwischen Ihrem@Bean
Methoden, das wird genauso gut funktionieren, aber die Bedingungen gelten*.Bitte finden Sie mehr info in diesem link.
http://dimafeng.com/2015/08/29/spring-configuration_vs_component/