1、什么是Spring?
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架
2、什么是IOC?
Spring通过IOC技术进行组件间的解耦,当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
3、什么是AOP
AOP(面向切面编程),可以说是OOP(面向对象)的补充和完善,OOP允许定义从上到下的关系,但并不适合定义从左到右的关系,例如日志功能。日志代码往往水平地分散在所有对象层次中,而与他所散布到的对象的核心功能毫无关系。对于其他类型的代码,如权限控制、异常处理等也是如此。这种散布在各处的与业务系统无关的代码叫做横切代码,他导致了大量的代码重复,且不利于各个模块的使用。
AOP利用一种称为横切的技术,将那些影响了多个类的公共行为封装到一个可用的模块,并将其命名为”切面“,以减少重复代码,降低模块间的耦合度。利用”横切“技术,AOP将软件系统分为两个部分:核心关注点和横切关注点,AOP的作用在于分离系统中的关注点。
4、容器的概念
Spring包含并管理应用对象的配置和生命周期,在这意义上他是一种容器。
5、Spring常用的注入方式有哪些?
1、构造注入
2、setter注入
3、基于注解的注入
6、Spring中的Bean是线程安全的吗?
Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的安全策略,因此可以说容器中的Bean本身不具备线程安全的特性,但是要结合具体的作用域区域去研究。
7、Spring支持几种作用域的Bean?
Spring支持以下5中类型的作用域
1、singleton:单例模式,在整个Spring IOC容器中,使用singleton定义的Bean只有一个实例
2、Protype:原型模式,每次通过容器的getBean()方法获取protype定义的Bean时,都将产生一个新的Bean实例
3、request:对于每次HTTP请求,都将产生一个实例
4、session:对于每次HTTP Session,都将产生一个新的bean实例
5、globalsession:每个全局的HTTP Session,都将产生一个bean实例
8、什么是beanFactory和fantoryBean?
共同点:两个都是接口
区别:
1、beanFactory是一个接口,他是spring中工厂的规范,是sprig IOC容器的核心接口,他定义了getBean(),containsBean()等管理bean的通用方法。spring容器都是他的具体实现,如:
- DefaultListableBeanFactory
- XmlBeanFactory
- ApplicationContext
使用场景:
从IOC容器中获取bean
检索bean是否存在
判断bean是否是单例的
2、FactoryBean首先他是一个bean,但他又不仅仅是一个bean,他还是一个生产或修饰对象生成的工厂bean,类似于工厂模式和装饰器模式,他能在需要的时候生产一个对象,且不限于他自身,他还能返回任何bean的实例。
spring有几种配置方式?
1、xml
2、注解
3、基于Java类的配置
10、spring中bean的声明周期
1、实例化
2、属性赋值
3、初始化
4、销毁
11、spring源码中用到的设计模式
1、工厂模式:spring中使用工厂模式通过BeanFactory创建Bean对象
2、单例模式:spring中bean的作用域默认都是单例的
3、代理模式:spring中AOP的实现