
Spring 学习笔记(二)—— IOC 容器(BeanFactory)
发布日期:2021-05-09 06:08:18
浏览次数:18
分类:博客文章
本文共 2104 字,大约阅读时间需要 7 分钟。
使用Spring IoC容器后,容器会自动对被管理对象进行初始化并完成对象之间的依赖关系的维护,在被管理对象中无须调用Spring的API。
为了实现IoC功能,Spring提供了两个访问接口:
- org.springframework.beans.factory.BeanFactory
- org.springframework.context.ApplicationContext
前者为Bean工厂,借助于配置文件能够实现对JavaBean的配置和管理,用于向使用者提供Bean的实例;
后者为ApplicationContext,其构建在BeanFactory基础上,辞工了更多的实用功能。
注意:
Spring中将IoC容器管理的对象称为Bean,这与传统的JavaBean不完全相同,只是借用了Bean的名称。
BeanFactory
BeanFactory作为制造Bean的工厂,BeanFactory接口负责向容器的使用者提供实例,其主要功能是完成容器管理对象的实例化。
常用的方法:
方法 | 功能描述 |
boolean containsBean(String name) | 判断Spring容器是否包含ID为name的Bean对象 |
Object getBean(String name) | 返回容器ID为name的Bean对象 |
Object getBean(String name,Class requiredType) | 返回容器中ID为name、类型为requiredType的Bean |
Class getType(String name) | 返回容器中ID为name的Bean的类型 |
例:
创建一个bean.xml
再创建一个Book的JavaBean,以及一个测试,BeanFactoryExample.java
package IoCDemo;import org.springframework.beans.factory.support.DefaultListableBeanFactory;import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;import org.springframework.core.io.ClassPathResource;/** * Created by Richard Cheung on 2017/7/23. */public class BeanFactoryExample { public static void main(String[] args){ ClassPathResource resource=new ClassPathResource("IocDemo/Bean.xml"); DefaultListableBeanFactory factory=new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory); reader.loadBeanDefinitions(resource); Book book= (Book) factory.getBean("book"); System.out.println(book.getName()); System.out.println(book.getAuthor()); System.out.print(book.getPublishHouse()); }}
输出结果为:
…………信息: Loading XML bean definitions from class path resource [IocDemo/Bean.xml]SSH开发rekentpublisherProcess finished with exit code 0
首先使用ClassPathResource类指定了配置文件是位于类路径下的bean.xml
然后构造了DefaultListableBeanFactory对象,并将DefaultListableBeanFactory对象传递给新构造的XmlBeanDefinitionReader对象。
通过XmlBeanDefinitionReader对象加载了配置文件。
最后通过DefaultListableBeanFactory中的getBean()方法从IoC容器中获取了Bean。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月12日 14时42分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mysql 常用函数(42)- substring_index 函数
2019-03-06
Jmeter 常用函数(28)- 详解 __FileToString
2019-03-06
Jmeter 常用函数(29)- 详解 __eval
2019-03-06
centos7 - 安裝 Python 3.7
2019-03-06
用前端姿势玩docker【一】Docker通俗理解常用功能汇总与操作埋坑
2019-03-06
基于jquery的简洁树形折叠菜单
2019-03-06
Spread for ASP.NET技术白皮书
2019-03-06
Asp.Net MVC4入门指南(4):添加一个模型
2019-03-06
我看TechEd 2012之技术热点
2019-03-06
Python和JavaScript在使用上有什么区别?
2019-03-06
实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
2019-03-06
Windows10的革命之路-全新UWP开发平台
2019-03-06
程序员Web面试之前端框架等知识
2019-03-06
ASP.NET MVC 5 - 视图
2019-03-06
2017年前端框架、类库、工具大比拼
2019-03-06
wxWidgets源码分析(1) - App启动过程
2019-03-06
wxWidgets源码分析(2) - App主循环
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(4) - 消息处理过程
2019-03-06