开发者社区> 问答> 正文

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 6999 0
1 条回答
写回答
取消 提交回答
  • 发现问题了 项目是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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多