Spring工厂模式:控制bean实例与自定义工厂
本文档主要介绍了在Spring框架中使用工厂模式来管理Bean的实例化过程,以及如何通过`ApplicationContext`来获取和配置Bean。首先,我们关注的是Spring工厂的两种实现方式: 1. 静态工厂方法: 在XML配置文件中,如`beans.xml`,使用`<bean>`标签定义一个名为`demoDao`的Bean,并指定其类(假设为`com.linhaol.example.DemoDao`)。为了通过工厂方法创建该Bean,`<bean>`标签的`factory-method`属性被设置为自定义的工厂方法名,这里为`createBean()`。这个方法在`MyBeanFactory`类中定义,该类提供了静态的创建Bean实例的方法。 ```xml <bean id="demoDao" class="com.linhaol.example.DemoDao" factory-method="createBean"/> ``` 2. 实例化使用自定义工厂类: `MyBeanFactory`类既是普通的Java类,也是一个工厂类,它有一个构造器和静态方法`createBean()`。在XML配置中,`<bean>`标签不仅指定类名,还指定了`factory-bean`属性为`myBeanFactory`,`factory-method`属性为`createBean`,这样Spring会自动调用`MyBeanFactory`的相应方法来创建Bean。 ```xml <bean id="bean" factory-bean="myBeanFactory" factory-method="createBean"/> ``` 接着,文档展示了如何在测试代码中使用`ApplicationContext`来获取配置好的Bean。`demo02`方法中,通过`ClassPathXmlApplicationContext`加载XML配置文件,然后通过`getBean`方法根据ID获取Bean实例。例如,通过`applicationContext.getBean("bean")`获取到的是`MyBeanFactory`的`createBean()`方法返回的`Bean`实例,并执行`addBook()`方法。 最后,提到Bean的作用域默认为`singleton`,这意味着每次请求都会返回同一个Bean实例。如果希望每个请求得到一个新的实例,可以将`scope`属性设置为`prototype`,如`<bean id="bean" class="com.linhao.example.Bean" scope="prototype"></bean>`。 总结起来,本篇文章重点讲解了Spring框架中如何通过工厂方法(静态或自定义工厂类)管理Bean的生命周期,并展示了如何在测试代码中正确使用`ApplicationContext`来获取Bean及其配置。同时,对Bean作用域的概念也进行了简要说明。
![](https://csdnimg.cn/release/download_crawler_static/10050977/bg6.jpg)
![](https://csdnimg.cn/release/download_crawler_static/10050977/bg7.jpg)
剩余30页未读,继续阅读
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/a2e363ed051c459dbf6721ba578ab271_kangu4.jpg!1)
- 粉丝: 7
- 资源: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)