1.Spring:
Spring的核心宗旨是简化企业级应用开发,同时给复杂的问题提供强大非侵入性框架。
Spring是一个轻量级的ioc和aop容器框架,Spring框架提供功能是由用户自己来决定的,用户要什么功能就调用什么功能并使用。
2.Spring的优点:
(1)Spring属于低侵入性框架,代码的污染极低。
(2)动态解耦,简化开发:提供了ioc容器,将对象之间的依赖交给Spring控制。
(3)aop编程的支持
(4)声明式事务的支持
(5)方便集成各种优秀的框架
3.IOC(控制反转):
IOC控制反转指将设计好的类交给Spring容器管理,而不是类的内部自己进行控制。将创建对象的的控制权转移到Spring容器中,并有容器根据配置文件去创建实例和管理各个实例之间的依赖关系,降低耦合,也利于功能的复用。
4.依赖注入的方式:
(1)set注入:property(实体类)中存在set()方法,默认通过反射调用无参构造器。
(2)构造器注入:根据类型或下标注入(最好还存在类型,从0开始)。
(3)注解注入:@Autowire根据byType,再添加@Qualifier按byName。
@Resource默认根据byName,再按照byType(javax包中的注解)
5.Spring的自动装配:
autowire中的值:通过设置autowire的值自动进行依赖注入。
(1)no:默认不进行自动装配,通过<ref>标签来装配bean。
(2)byName:根据bean名称来进行自动装配。
(3)byType:根据参数的数据类型来进行自动装配。
(4)constructor:利用构造函数进行自动装配,并且构造函数的参数通过bytype进行自动装配。
(5)autodetect:自动探测,有构造方法,通过构造方法自动装配,否则通过bytype的方法自动装配。
6.bean的作用域:
(1)singleton:IOC容器中只存在一个bean实例,bean默认以单例的模式存在
(2)prototype:每次容器调用bean时都会返回一个实例。
(3)request:适用于webApplicationContext,每次http请求都会创建一个新的bean。
(4)session:使用于webApplicationContext,同一个HTTPSession共享一个bean,不同的session使用不同的bean。
(5)globalSession:适用于webApplicationContext,适用于protlet应用环境。
7.AOP(面向切面编程):
AOP通过预编译和动态代理实现程序功能统一维护的一种技术。
在运行期间,将两块代码动态的结合在一起。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,
提高程序的可重用性。
8.动态代理:
1.jdk代理(目标类和代理类实现统一接口):使用反射技术(默认代理方式,不实现同一接口就用cglib)。
2.第三方jar包(cglib:目标类和代理类是继承关系):通过字节码为目标类创建一个子类对象,
并且子类对象中拦截父类的所有方法的调用,然后在方法调用的前后添加想加入执行的代码。
9.设计模式
(1)工厂模式:创建工厂类对象实例的时候。
(2)单例模式:bean默认为单例模式。
(3)代理模式:aop的动态代理。
(4)模板方法:解决代码重复问题。(Template)
(5)观察者模式:当一个对象的状态改变时,所有依赖它的对象都会得到通知被制动更新。
推荐:Spring的面试总结(个人觉得还不错):https://blog.csdn.net/a745233700/article/details/80959716