在SpringBoot火爆2019的年代,Spring框架也逐渐变成了底层。对于具体的应用,使用Spring开发的效率远远比不上使用SpringBoot,IOC与AOP的xml在SpringBoot中被取代,包依赖也被进一步被封装成各个模块。spring
简化开发的同时带来了更多的透明性,欲戴皇冠,必承其重。编程
以前在CSDN写了一篇描述:https://blog.csdn.net/qq_40754146/article/details/90815333安全
在Spring的时代,就推荐使用注解而不是xml来配置,在SpringBoot中彻底实现了注解的全面占领。框架
IOC有什么用?性能
IOC容器的背景是构建大型应用时会用到不少类,而完成对类与类之间的各类依赖关系管理成为了一个问题,因而IOC容器出现了。.net
IOC容器的做用就是管理类之间复杂的依赖关系。代理
用专业的名词解释,就是下降类之间的耦合度,方便后期开发和维护。日志
下降耦合本质上是将类与类之间的耦合转为类和IOC容器之间的耦合,PS:耦合不能彻底消除,只能减少。xml
AOP中文名叫面向切面编程。对象
AOP使用动态代理实现。包括两种方式:
关于动态代理:
关于反射:反射机制容许程序在运行期 借助于Reflection API取得任何类的内部信息,并能直接操做任意对象的内部属性及方法。 (最高权限)
AOP的实现本质是反射加上代理模式。
面向切面的思想本质上就是经过动态代理(反射)实现各个类的代码控制。
依然是很抽象的一句话。。。。。
【举个栗子】
如今有5个类,每一个类有5个方法,若是我想要在每一个方法执行完成以后打印方法名,按照没有aop的思想就是在每一个方法后面加上logger.info或者system.out.println。
一共就须要些25行代码,这个时候,aop登场。创建一个切面类,而后定位到这5个类的每一个方法,加一个后置通知(就是方法执行完以后会执行这个通知,本质上是一个方法)。
这样25行的代码简化成了一个方法加方法体的一行代码,若是说IOC是解决类与类之间的依赖关系(有点无形),那么AOP是看得见能够简化大量代码。
AOP的应用场景有日志记录,性能统计,安全控制,事务处理,异常处理等。目前用过的就是日志处理(hhh)