Spring中BeanFactory和ApplicationContext的区别
我用一个例子去测试BeanFactory和ApplicationContext的区别
首先建立一个bean
public class User {
//声明无参构造,打印一句话,监测对象创建时机 public User(){ System.out.println("User对象初始化"); } }
然后再建立测试类
public class UserTest { @Test public void ApplicationContexttest(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void BeanFactorytest(){ Resource resource=new PathResource("applicationContext.xml"); BeanFactory beanFactory=new XmlBeanFactory(resource); } }
配置xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
<bean name="user" class="bean.entity.User"></bean>
</beans>
执行 ApplicationContexttest()方法
结果:
说明user对象在ApplicationContext对象创建时user对象就已经初始化
执行BeanFactorytest()方法
结果:
BeanFactory对象初始化时并没有初始化user对象
然后向两个方法添加获取对象的代码
public class UserTest { @Test public void ApplicationContexttest(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println(context.getBean("user")); System.out.println(context.getBean("user")); } @Test public void BeanFactorytest(){ Resource resource=new ClassPathResource("applicationContext.xml"); BeanFactory beanFactory=new XmlBeanFactory(resource); System.out.println(beanFactory.getBean("user")); System.out.println(beanFactory.getBean("user")); } }
执行 ApplicationContexttest()方法
结果:
两次对象内存地址一致
执行BeanFactorytest()方法
结果:
在执行getBean()方法时才创建user对象
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法