IOC:控制反转,是一种降低对象之间耦合关系的设计思想,面试的时候最好能说出来个例子,加深理解。例子:租房子,以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个房屋中介,把你需要的房型告诉中介,就可以直接选到需要的房子,中介就相当于spring容器。
实现原理简述:
- 创建xml配置文件,配置要创建的对象类
- 通过反射创建实例
- 获取需要注入的接口实现类并将其赋值给该接口
AOP:面向切面编程,是面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如:动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序可重用性,提高开发效率。
实现原理简述:
动态代理(利用反射和动态编译将代理模式变成动态的)
有接口的情况为JDK动态代理,横向抽取机制
没接口的情况为cglib动态代理