Wenn Sie den @Component
-Tag verwenden, ist es das gleiche wie eine POJO (Plain Old Java Object) mit einer Vanilleschote Erklärung Methode (kommentierte mit @Bean
) mit. Zum Beispiel ergeben die folgenden Methoden 1 und 2 das gleiche Ergebnis.
Methode 1
@Component
public class SomeClass {
private int number;
public SomeClass(Integer theNumber){
this.number = theNumber.intValue();
}
public int getNumber(){
return this.number;
}
}
mit einer Bohne für 'theNumber':
@Bean
Integer theNumber(){
return new Integer(3456);
}
Methode 2
//Note: no @Component tag
public class SomeClass {
private int number;
public SomeClass(Integer theNumber){
this.number = theNumber.intValue();
}
public int getNumber(){
return this.number;
}
}
mit den Bohnen für beide:
@Bean
Integer theNumber(){
return new Integer(3456);
}
@Bean
SomeClass someClass(Integer theNumber){
return new SomeClass(theNumber);
}
Methode 2 können Sie Bohne Erklärungen zusammen zu halten, es ist ein bisschen flexibler usw. Sie können sogar eine andere Nicht-Vanille-Bohne Someclass wie folgt hinzufügen möchten:
@Bean
SomeClass strawberryClass(){
return new SomeClass(new Integer(1));
}
Gibt es irgendwo @Bean Kann neben der Konfigurationsklasse verwendet werden? – Willa
Siehe auch [Was ist der Unterschied zwischen '@ Component',' @ Repository' und '@ Service' Annotationen im Frühjahr?] (Http://stackoverflow.com/q/6827752) –
@Willa Ja, gibt es. Das nennt man "Lite-Modus". Und es wird nicht empfohlen. Siehe hier: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-java-basic-concepts – smwikipedia