Spring框架核心功能:
控制反转 IOC:Inversion of Control
依赖注入 DI:Dependency Injection
切面编程 AOP:Aspect Oriented Programming
控制反转思想:
传统逻辑:基层零件决定上层实现(我有什么样的零件 - 怎么通过这些零件生成最终产品)
反转逻辑:上层需求决定基层零件(我要生产什么样的产品 - 需要什么样的零件)
传统逻辑,当零件不同时,实现方法就不同,需要重写整个过程的实现代码
反转逻辑,提前定好实现流程,零件按约定的规范生产,代码中只需替换零件的实现类即可(在XML或Config类中动态指定零件实现类)
更进一步,不止零件是可以插拔的,如果有多种生产方式,同样可以用接口来定义统一规范,再根据实际需要动态替换实现类
依赖注入思想:
将构造器参数,Setter方法参数,接口实现类放到XML或者Config类中去指定
当生产需求发生变化时,只需在XML中修改依赖的参数和实现类即可
IOC和DI都是为了解耦合性
通过Interface来定义规范,通过Impl类来定义具体实现,通过XML来动态插拔
切面编程思想:
像Servlet,Window之类的对象,都有自己的执行流程(生命周期)
普通的业务类,同样也有多个方法,每个方法代表了一个操作或阶段
切面编程的思想,就是要在这些节点附加额外的处理
比如指定调用方法前做什么,调用方法后做什么,是否拦截方法,方法返回后做什么,方法发生异常时做什么
切面编程实现原理:生成代理类,对原有类进行增强,通过XML或注解中指定代理细节
