//一个简单的类
测试类
ApplicationContext 引用 竟然不同。。。希望有人能知道原因。。。
package org.terry.ApplicationReferenceGet;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class Chinese implements BeanFactoryAware, ApplicationContextAware {
// beanFactory以成员变量保存
private BeanFactory factory;
//applicationContext
private ApplicationContext applicationContext;
/**
* 必须实现的方法 setBeanFactory(BeanFactory arg0)
*/
@Override
public void setBeanFactory(BeanFactory arg0) throws BeansException {
// TODO Auto-generated method stub
this.factory = arg0;
}
// 获得容器引用的测试方法
public BeanFactory getBeanFactory() {
return factory;
}
// 获得上下文
public ApplicationContext getApplicationContext() {
return applicationContext;
}
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
applicationContext = arg0;
}
}
测试类
package org.terry.ApplicationReferenceGet;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
//这部分是通过代码直接获得Factory引用
Resource resource=new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory=new XmlBeanFactory(resource);
//通过bean获得factory引用
Chinese chinese=(Chinese) factory.getBean("chinese1");
System.out.println(factory==chinese.getBeanFactory());
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(chinese.getApplicationContext()==context);
}
}
/**
* 答案是false why?
*/
ApplicationContext 引用 竟然不同。。。希望有人能知道原因。。。