博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring源码 03 IOC原理
阅读量:37194 次
发布时间:2020-08-01

本文共 1333 字,大约阅读时间需要 4 分钟。

参考源

《Spring源码深度解析(第2版)》

版本

本文章基于 Spring 5.3.15


总流程

基本接口

IOC 容器两种实现方式:BeanFactoryApplicationContext

BeanFactory

容器的根接口,也是容器的入口。

Spring 内部使用的接口,不推荐开发人员使用

加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象。

必须遵循完成的创建过程,这个过程是由 Spring 来管理控制的。

层级

BeanFactory 有两个比较重要的接口:ListacleBeanFactoryHierarchicalBeanFactory

示例

BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));

FactoryBean

用于更加灵活的创建对象。

只需要调用 getObject 就可以返回具体的对象,整个对象的创建过程是由用户自己来控制的,更加灵活。

ApplicationContext

BeanFactory 的子接口

提供更多功能,一般由开发人员使用

加载配置文件的时候就会按照配置文件创建对象。

FileSystemXmlApplicationContext 示例

ApplicationContext context = new FileSystemXmlApplicationContext("D:\\Project\\spring-framework\\spring-test\\src\\main\\resources\\applicationContext.xml");

ClassPathXmlApplicationContext 示例

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

FileSystemXmlApplicationContext 读取的是系统路径,需要输入文件全路径,繁琐且不灵活。

ClassPathXmlApplicationContext 读取是资源路径,输入相对于资源文件夹的路径即可,简单且灵活,推荐使用 ClassPathXmlApplicationContext

示例

public class UserDao {	public void add() {		System.out.println("调用了添加方法");	}}

配置文件

官方推荐命名为 applicationContext.xml

使用

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = context.getBean(UserDao.class);userDao.add();

执行以上代码得到:

调用了添加方法

转载地址:http://pupwwy.baihongyu.com/

你可能感兴趣的文章
手机编程环境初尝试-用AIDE开发Android应用
查看>>
Java关键字的汉化用词探讨
查看>>
程序员面试时用中文命名写白板代码的好处
查看>>
1992年日本对母语编程的可读性比较实验
查看>>
[转] 用python编写控制网络设备的自动化脚本3:启动
查看>>
扩展Python控制台实现中文反馈信息
查看>>
扩展Python控制台实现中文反馈信息之二-正则替换
查看>>
在PyPI测试平台发布Python包
查看>>
中文代码示例之Electron桌面应用开发初体验
查看>>
中文代码示例之NW.js桌面应用开发初体验
查看>>
[转载] 中文輸進去,程式出得來,開發者發大財 - LingaScript: 中文化TypeScript
查看>>
为《 两周自制脚本语言 》添加中文测试代码
查看>>
将《 两周自制脚本语言 》测试中使用的接口中文化
查看>>
5分钟入门LingaScript-尝鲜中文版TypeScript
查看>>
重拾《 两周自制脚本语言 》- 支持中文标识符
查看>>
Java实现文本编辑时基于拼音输入的补全原型
查看>>
中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------05
查看>>
中文命名之Hibernate 5演示 - 使用注解(annotation)而非xml定义映射
查看>>
从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势
查看>>
中文代码之Django官方入门:建立模型
查看>>