spring工厂的底层实现原理(简易版)
从思想层面上分析工厂是如何实现的
为什么应用工厂之后就能够通过工厂创建对象呢?
从编码流程分析 spring 底层实现
对于一个应用,我们首先从编码的角度入手,先看看逻辑书写上如何调用 spring 工厂生产对象。
应用 spring 框架的主要流程
第一步,首先创建一个实体类,作为 spring 工厂生产的产品,在这里给出一个Account
类
1 | public class Account implements Serializable { |
第二步,我们在已经创建了实体类的情况下,对 spring 配置文件进行配置,在 xml 文件内创建 bean 标签如下
1 | <bean id="account" class="com.AnselYuki.Account"/> |
第三步,在项目内使用 JUnit 单元测试书写一个方法进行测试
1 |
|
spring 框架内部的执行流程
我们已经成功的应用了 spring 框架,在上面的例子中,最先执行的是单元测试中的代码,则执行步骤如下
通过
ClassPathXmlApplicationContext
工厂读取配置文件applicationContext.xml
在第一步中读取配置文件,获取 bean 标签相关的值,并立即在框架内部通过反射创建对象
1
2Class<?> clazz = Class.forName("com.AnselYuki.Account");
account = clazz.newInstance();通过 getBean 方法返回生产的对象
反射创建对象底层一定会调用对象自己的构造方法,默认调用无参构造方法
反射创建对象等效于使用
new
创建对象
若一个对象没有无参构造方法,则 spring 工厂会抛出异常
若一个对象的构造方法修饰成私有的,spring 工厂同样能够调用无参构造方法,即 Spring 工厂可以调用对象私有的构造方法创建对象
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小鹿包的文档库!