Spring相关概念

468 阅读2分钟

1.BeanFactory和FactoryBean定义及差别?

BeanFactory: 是一个工厂接口。BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象以及建立这些对象间的依赖。

Spring容器给出了很多实现,如XmlBeanFactory、ApplicationContext等,其中XMLBeanFactory是最常用的一个,实现以XML方式描述组成应用对象及对象间依赖关系。

BeanFactory提供的方法:containsBean、getBean、getBean、getType、isSingleton、getAliases等

FactoryBean:是一个Bean,不同于普通Bean,它实现了FactoryBean接口的Bean,根据该Bean的ID从BeanFactory中获取的是实际上是FactoryBean的getObject返回的对象,而不是FactoryBean本身,如果要获取FactoryBean对象,要在id前面加一个&符号获取。

2.SpringIOC理解及初始化过程?

IOC:控制反转。将对象的创建交由IOC容器去做,而控制反转的具体实现是DI(依赖注入)。 DI:依赖注入

DI(依赖注入)方式: 1)set设值注入 2)构造器注入 3)接口注入

IOC容器初始化过程: 1)Resource定位 2)将Resource定位好的资源载入到BeanDefinition 3)将BeanDefinition注册到容器中

3.创建Bean的三种方式

1)基于xml定义bean

a)调用构造器创建Bean

image.png

b)调用静态工厂创建Bean

image.png

c)调用实例工厂创建Bean

image.png

2)基于注解定义(Component、Controller、Service、Repository)

3)基于java类的bean定义(@Bean)

4.Spring的自动注入

Spring提供了5种自动装配的类型

no:显式指明不使用spring的自动装配功能 byName:根据属性和组件名称来匹配 byType:根据属性和组件类型来匹配 constructor:根据构造函数 autodetect:利用spring的自省机制判断是否byType还是constructor

1)基于xml自动装配

2)基于注解自动装配(@Autowired、@Resource)

两种注解区别: 1)@Resouce默认使用byName进行装配 ,@Autowired默认使用byType进行装配

5.定义bean如何选择何种方式

一般使用基于注解方式定义bean,让程序更简洁。但对于第三方jar包里面的,我们没有办法在这些组件添加注解使之成为spring容器管理的bean,这种情况下使用xml或者java类进行配置。如数据库DataSource