spring注解注入的bean和从ApplicationContext上下文取出的bean不是同一个?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

spring注解注入的bean和从ApplicationContext上下文取出的bean不是同一个?

public class SpringApplicationContext implements ApplicationContextAware {
 
    private static ApplicationContext applicationContext;
 
    @Override
    public void setApplicationContext(ApplicationContext context)
            throws BeansException {
 
        applicationContext = context;
    }
 
    public static Object getBean(String name) {
        return applicationContext.getBean(name);
    }
     
    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }
 
}

@Repository(value="helloDao")
public class HelloDao {
     
    public void save(){
        System.out.println("HelloDao.save");
    }
 
}
@Service("helloService")
public class HelloService {
    @Resource(name = "helloDao")
    private HelloDao dao;
 
    public void say() {
         
        System.out.println(SpringApplicationContext.getBean("helloDao")==dao);//false
         
        System.out.println("say hello");
    }
 
}

展开
收起
a123456678 2016-03-19 09:56:03 6714 0
1 条回答
写回答
取消 提交回答
  • a123456678
    发现问题了 项目是spingmvc+spring bean分别是从 springmvc和spring两个容器里取到的。
    
    处理办法:
    
    在spring的配置
    
    <context:component-scan base-package="com">
    <context:exclude-filter type="annotation"
    expression="org.springframework.stereotype.Controller" />
    </context:component-scan>
    
    springmvc配置
    
    <context:component-scan base-package="com" use-default-filters="false"> 
    <context:include-filter type="annotation"
    expression="org.springframework.stereotype.Controller" />
    </context:component-scan>
    2019-07-17 19:07:23
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
电商网站需求分析和架构设计Spring Boot2.6入门
立即下载
云上Docker的Spring Cloud微服务应用实践分享
立即下载
Spring Boot 2.6.0电商网站开发实战
立即下载