一、IOC
1. 概念
IOC,又称控制反转:就是将原本在程序中手动创建对象的控制权,交给Spring框架来管理。通过工厂设计模式,对象可以从工厂中得到。主要用到的技术有反射。
2. 最常见的实现方式:
依赖注入 DI:①set方法注入;②构造方法注入
3. 优点:
① 资源集中管理,实现资源的可配置和易管理;
② 降低了使用资源双方的依赖程度,也就是我们说的耦合度。
4. 工作流程:
第一阶段,IOC容器的初始化。主要是根据程序中定义的XML或者注解等Bean的声名方式,通过解析和加载后生成BeanDefinition,然后注册道IOC容器中。
第二阶段,完成Bean初始化及依赖注入。通过反射针对没有设置lazy加载属性的单例Bean进行初始化,完成Bean的依赖注入。
第三阶段,Bean使用。通过注解或者BeanFactory从IOC容器中获取指定的Bean实例。
二、AOP
1. 概念
AOP,又称动态代理:能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
2. 作用
在不修改源代码的情况下,可以实现功能的增强。
3. 基本概念:
- 切面(Aspect): 切面用于组织多个Advice,Advice放在切面中定义。
- 连接点(Joinpoint): 程序执行过程中明确的点,如方法的调用,或者异常的抛出。在Spring AOP中,连接点总是方法的调用。
- 通知(Advice): AOP框架在特定的切入点执行的增强处理。处理有"around"、“before” 和"after"等类型
- 切入点(Pointcut): 可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。