13.Spring IpC 和AOP:IoC: Inversion of Control (控制反转/反转控制),它是一个技术思想而不是一个技术实现,在Java开发领域他所描述的事情是对象的创建和管理的问题。与传统开发方式相比在IOC的思想开发方式下,当类A需要以来类B时,我们不要自己去new对象了,而是由IOC容器帮我们实例化对象并且去管理它,我们需要什么对象直接从IOC容器中获取即可,由此我们可以省去创建和管理对象的一系列事情,也丧失了创建、管理对象的权力。 控制反转解释:控制:指的是对象创建(实例化、管理)的权利,反转:控制权交给外部环境了(spring框架、IoC容器) IoC解决对象之间的耦合问题,例如当service层调用dao层时,传统方式下我们需要在service中new出dao层的具体实现类,这时当我们实现类需要改变时,service层也需要做相应的改变,这就造成了service层和dao层的强耦合。而使用IOC实例化对像时,我们只需要关注调用的dao层的接口,在service中声明接口属性,具体的实现类在IOC容器中进行切换,因此也不会产生对象中强耦合的情况 AOP: Aspect oriented Programming 面向切面编程,AOP是OOP的延续。 OOP的三大特征: 封装、继承和多态,让原有的类继承顶级父类,这样子类中就可以不再重复写这些共有方法了,同样子类下的子类依然可以通过继承父类来避免代码的重复。但是当顶级父类中的多个方法中的相同位置出现重复代码时,OOP的思想就无法解决了。此时我们就需要用到AOP的思想了。 首先解释此类重发代码被称为“横切逻辑代码”,即在多个纵向(顺序)流程中出现的多个相同子流程代码。此类代码的使用场景通常有:性能监控、事务控制、权限校验和打印日志中。