Der folgende Code funktioniert gut in Frühling 4, aber ich frage mich, warum die getBean (FooService.class) eine bereits geladene Bean zurückgibt. Ich dachte, dass die Reihenfolge des Bean-Ladens nicht garantiert ist, was bedeutet, dass es möglich ist, eine Null-Bean zu erhalten. Liegt es daran, dass das Ladeziel eine Klasse ist, keine String (dh Objekt), oder liegt es daran, dass die FooService-Bean einen speziellen Bereich hat, wie Prototyp? Wenn ja, was ist der Unterschied zwischen getBean (Klasse) und getBean (Objekt)Warum diese Bean nicht null ist
public abstract class AbstractService implements ApplicationContextAware {
protected ApplicationContext applicationContext;
protected FooService fooService;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@PostConstruct
protected void postConstruct() {
fooService = applicationContext.getBean(FooServiceImpl.class);
}
Ich denke, das ist der Sinn des Frühlings, um keine Nullobjekte zu erhalten – XtremeBaumer
Eigentlich denke ich, Ihre * Bean * ist ** null **, ich meine, Sie verwenden die * ApplicationContext *, um die spezifische Bean-Objekt zu laden. Mit Frühling brauchst du es nicht. Sie können die Annotation * @ Autowired * für den Bean-Parameter oder besser in einem Klassenkonstruktor, in dem die Bean ein Parameter ist, oder in einer * set * -Methode verwenden. –