有以下代码,最后比较注入的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 比的才是引用。