1、两者通过xml配置文件加载bean,ApplicationContext初始化时会创建bean实例,而BeanFactory初始化没有创建bean的实例;
public class UserBean {
private int id;
private String name;
private int age;
public UserBean() {
super();
System.out.println("init UserBean()...");
}
}
applicationContext.xml添加bean;
<bean id="userBean" class="com.bean.UserBean" ></bean>
启动测试类 1:
@Test
public void testApplicationContext()
{
ApplicationContext ac = new ClassPathXmlApplicationContext(
"applicationContext.xml");
}
启动测试类 2:
@Test
public void testBeanFactory()
{
BeanFactory bf = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
}
2、区别二是特性方面;
public abstract interface ApplicationContext extends EnvironmentCapable,
ListableBeanFactory, HierarchicalBeanFactory, MessageSource,
ApplicationEventPublisher, ResourcePatternResolver {
public abstract String getId();
public abstract String getApplicationName();
public abstract String getDisplayName();
public abstract long getStartupDate();
public abstract ApplicationContext getParent();
public abstract AutowireCapableBeanFactory getAutowireCapableBeanFactory()
throws IllegalStateException;
}
特性 BeanFactory ApplicationContext
Bean 实例化/装配 YES YES
自动BeanPostProcessor NO YES
自动BeanFactoryPostProcessor注册 NO YES
MessageSource 访问(i18n) NO YES
ApplicationEvent 发送 NO YES