欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单实现Spring中BeanFactory原理

程序员文章站 2022-05-22 09:52:56
前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱。所以需要继续加强。 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说出来的东西才有意义。这种面试的问法,也只能是面试的问法,对实际的掌握还是没有丝毫意义的。所以我认为 ......

前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱。所以需要继续加强。

这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说出来的东西才有意义。这种面试的问法,也只能是面试的问法,对实际的掌握还是没有丝毫意义的。所以我认为 有机会一定要读下spring的源码 来过一遍 具体实现,这样的才是有意义的做法。同意的请举手。

这里说明一下这三个spring 面试问题:

1、回客科技 面试的 实现ioc 容器用到的技术

  

第1种 说法:

参考

 

IoC则是一种 软件设计模式,简单来说Spring通过工厂+反射来实现IoC。

原理简单说明:
其实就是通过解析xml文件,通过反射创建出我们所需要的bean,再将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这bean。

 

第2种 说法:

参考:

 

使用的主要知识点:    

dom4j解析xml文件  

xpath表达式(用于解析xml中的标签) 

java反射机制   

内省(获取Bean属性的set方法进行赋值)

 

第3种 说法

参考:

IOC/DI使用到的技术

  1. JDOM:JDOM是对xml文件进行解析的技术,Spring的配置文件applicationContext.xml就是由JDOM进行解析的,它可以提取出xml文件中定义的标签和属性值。

  2. 反射机制:对配置文件中的类名使用反射机制可以实现类加载初始化等工作,也可以调用类的方法进行属性注入,java.lang.reflect提供了反射相关的工具

 

2:简述BeanFactory的实现原理

这里是cp的代码,为什么cp 是因为 这几句关键的东西需要我记住的。

参考博客:

先来看看Java代码获取Spring中Bean的代码(一共有五种方式,这里只展示其中一种方法):

简单实现Spring中BeanFactory原理

有没有发现上面的代码与的代码很相似。对,你没有看错,Spring中的BeanFactory用到的就是简单工厂模式。

现在的思路就更加清晰了,要想实现Spring中的BeanFactory,无非就用到了以下几个技术:

        1.使用简单工厂模式来处理bean容器。

        2.解析xml文件,获取配置中的元素信息。

        3.利用反射获实例化配置信息中的对象。

        4.如果有对象注入,使用invoke()方法。

        5.实例化的对象放入bean容器中,并提供getBean方法。

通过以上步骤就实现了spring的BeanFactory功能,只要在配置文件中配置好,实例化对象的事情交给BeanFactory来实现,用户不需要通过new对象的方式实例化对象,直接调用getBean方法即获取对象实例。

 

3、大搜车面试的 spring 怎么实现的依赖注入(DI)

参考博客:

  在Spring容器中为一个bean配置依赖注入有三种方式:

· 使用属性的setter方法注入  这是最常用的方式;

· 使用构造器注入;

· 使用Filed注入(用于注解方式).

 

感谢 以上博客代码分享人,目前没有时间读源码,只能先记住了。面试还是需要应付一下的~~