问题描述
- 注解注入的bean和从上下文取出的bean不是同一个?
-
有以下代码,最后比较注入的dao和ApplicationContext
上下文取出的dao,不是同一个。是我哪里有错误吗?
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"); }
}
解决方案
对象比较不能用 == 需要用 equse ,==比的是对象名地址。 equse 比的才是引用。
解决方案二:
照这么看来应该是不一样的。但是,可以肯定的是所有用注解注入的同一类的属性都是同一个对象。
时间: 2024-08-29 14:38:54