IOC和AOP
我对IOC和AOP的理解
spring中最重要的两大核心概念就是IOC和AOP了,这也是面试中框架部分的必问点了
IOC
首先是IOC,到底什么是IOC呢?IOC(Inversion Of Control)叫做控制反转。它主要还是一种设计思想,它可以将原本手动创建实例的过程交给 spring 来处理。目的就是简化开发。因此,IOC还提供了IOC容器来存放这些实例。
IOC的主要实现就是DI依赖注入,Spring帮助了我们生产对象、管理对象、管理对象与对象之间的依赖关系。降低了代码的耦合度、方便开发。
其中依赖注入也有几种方式
1、通过构造函数创建
2、通过set方法创建
3、用p命名空间
4、使用注解的方式:@Autowired/@Resource
AOP
AOP(Aspect Oriented Programming)称为面向切面编程。
AOP是一种编程思想,它可以将那些与业务无关,却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装起来,减少系统的重复代码,降低了模块之间的耦合度,具有可扩展性和可维护性
AOP的实现原理是动态代理,分别有两种:JDK动态代理和CGLIB动态代理
现在实现AOP的方式主要有两种,一个是Spring AOP,另一个是 AspectJ AOP,其中Spring AOP已经集成了AspectJ,两者的区别:AspectJ功能更加强大性能更好,但SpringAOP更简单,