1、spring 依赖注入的四种方式
(1) set注入,创建实例对象,通过set方法进行注入,把对象以参数的方式传入
(2) 构造方法注入:把要控制的对象通过构造方法的方式传入到当前类中
(3) 静态工厂方式:通过静态工厂来获取自己需要的类
(4) 实例工厂方法注入:获取对象的实例方法不是静态的,需要先实例化化一个工厂类
2、 如何理解spring中的AOP
(1)原理:AOP:面向切面编程,是对OOP(面向对象编程)的补充。AOP是一种“横切”技术,将那些影响了多个类的公共行为封装到一个可用块,即将与业务无关,确为业务所共同调用的模块或责任封装起来,减少构造系统的重复代码。AOP选择性地提供业务逻辑。实现AOP的主要技术分为两大类:动态代理技术和静态植入方式。
(2)实现:JDK动态代理:其代理对象必须是某个接口的实现,通过在运行期间创建一个接口的实现类来完成对目标对象的代理。核心的两个类是InvocationHandler和proxy。
CGLIB代理:在运行期间生成的代理对象是针对目标类扩展的子类,性能比JDK强,需要引入jar包。
(3)应用场景:权限检查、缓存、延迟加载、调试、日志记录、持久化、资源池
3、如何理解Spring中的IoC
(1) 原理:IoC,控制反转,也叫做依赖注入。要获取一个类的控制权不通过实例化的方式来获取,控制权由引用对象交还给了spring,而是把管理交付给spring来进行分配。首先把对象登记到spring中,spring负责动态地提供对象所需要的东西。spring依赖注入是通过反射机制来实现的。sping降低了组件之间的耦合性。