ApplicationContextAware找不到bean
一粒大豌豆 2017-10-25 09:54:39 在获取ApplicationContext时实现了ApplicationContextAware接口,在获取@Configuration配置的bean时报异常:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named xx is defined.
但是在获取自动扫描的service时是正常的。
例如:SpringContextHolder.getBean("userService");
然后在new获取 ApplicationContext后是可以正常获取bean的
ApplicationContext context = new AnnotationConfigApplicationContext(POJOConfig.class);
User_login user_login=(User_login) context.getBean("user_login");
在项目启动时@Configuration注解的类构造方法是执行了的
打印了: POJOConfig容器启动初始化。。。
下面是代码
@Configuration
public class POJOConfig {
public POJOConfig() {
System.out.println("POJOConfig容器启动初始化。。。");
}
@Bean(name="user_login")
@Scope("prototype")
public User_login user_login(){
User_login user_login=new User_login();
user_login.setTime(new Date());
return user_login;
}
}
@Service
public class SpringContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextHolder.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String beanName) {
return applicationContext.getBean(beanName);
}
public static <T>T getBean(String beanName , Class<T>clazz) {
return applicationContext.getBean(beanName , clazz);
}
public static boolean checkNull(){
if(applicationContext==null){
return true;
}else{
return false;
}
}
}
配置文件都是自动扫描的就不贴了,applicationContext也获取到了。
是不是还有什么配置我漏了?