Когда я создаю свой , myBean Constructors используются успешно. Но после создания бобов null
с использованием @Autowired
тегов.@Autowired Spring NullPointerException Null Beans после ApplicationContext Creation
Я, хотя @Autowired
, заменил бы getBean()
как-нибудь? Неужели я ошибаюсь?
Зачем мне нужно позвонить GetBean, когда я уже создал свои бобы (во время запуска ApplicationContext), а также Autowired?
Вот что я сделал до сих пор:
Главная:
@EnableAutoConfiguration
@Configuration
@ComponentScan("com.somePackage")
public class Main {
ApplicationContext ctx= new AnnotationConfigApplicationContext(AppConfig.class);
SomeBean myBean = ctx.getBean(SomeBean.class);
myBean.doSomething();//succeeds
AnyOtherClass aoc = new AnyOtherClass();//Nullpointer (see AnyOtherClass.class for details)
}
AnyOtherClass:
public class AnyOtherClass {
@Autowired
protected SomeBean someBean;
public AnyOtherClass(){
someBean.doSomething();//Nullpointer
}
AppConfig:
@Configuration
public class AppConfig {
@Bean
@Autowired
public SomeBean BeanSomeBean() {
return new SomeBean();
}
}
MyBean:
public class SomeBean {
public SomeBean(){}
public void doSomething() {
System.out.println("do Something..");
}
}
Примечание: Интерфейс ApplicationContextAware
работает нормально, но без @Autowired
. И я бы очень хотел пойти с @Autowired
, так как это звучит более комфортно и менее ошибочно для меня.
make 'AnyOtherClass' имеет аннотацию' @ Component' и удостоверьтесь, что автоскан видит ее – EpicPandaForce