Spring【BeanFactory和ApplicationContext的区别】

本文详细对比了Spring框架中BeanFactory与ApplicationContext两种IoC容器的区别。从bean实例化时机到特性支持,如自动BeanPostProcessor注册、BeanFactoryPostProcessor、MessageSource访问及ApplicationEvent发送等方面进行了深入解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值