AOP(面向切面编程)
2018-01-11 00:31
169 查看
泛型依赖注入:
面向切面要解决的问题:
1、代码混乱:越来越多的非业务需求(日志、验证等)的加入使得业务方法变得急剧膨胀,每个方法在处理核心业务逻辑的同时还要兼顾其他多个关注点。
2、代码分散:以日志需求为例,为了实现这个单一需求,不得不在模块或方法中书写重复的日志代码,如果日志需求一旦发生变化,不得不修改所有的日志代码
使用动态代理解决上述问题:
代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象取代原始对象,任何对原始对象的调用都要经过代理对象,代理对象决定将方法调用转到原始对象上面
面向切面原理(基于注解的方式和xml方式):
1、AOP(Aspect Oriented Programming)是一种新的方法论,是对传统OOP的补充
2、AOP的主要编程对象是“切面(Aspect)”,而切面模块化横切关注点
3、在进行AOP编程时,任然需要定义公共功能,但可以明确的定义这个公共功能在哪里以及如何应用。不必修改受影响的类,这样一来横切关注点就被模块化到对象(切面)里面。
AOP的好处:
1、每个事物逻辑位于一个位置,代码不分散,便于维护和升级
2、业务模块更简洁,只包含业务核心代码
实现步骤:
面向切面有五个通知类型:
1、环绕通知:包含前置、后置、返回、异常通知,类似于动态代理的全过程:
切面优先级问题:
注解:order:越小,优先级越高
定义一个方法。用于声明切入点表达式,一般地,该方法中不在写其他的代码
@Pointcut(“execution(* com.spring.aop.impl..(int,int))”)
public void declareJoinPoint(){}
@Before(“declareJoinPoint()”) // 引用了声明的切入点表达式(不同包下,可用包路径)
public void boforeMethod(JoinPoint joinPoint){
String methodName = joinPoint.getSignature().getName();
List args = Arrays.asList(joinPoint.getArgs());
System.out.println(“The method “+methodName+” begin with “+ args);
}
面向切面要解决的问题:
1、代码混乱:越来越多的非业务需求(日志、验证等)的加入使得业务方法变得急剧膨胀,每个方法在处理核心业务逻辑的同时还要兼顾其他多个关注点。
2、代码分散:以日志需求为例,为了实现这个单一需求,不得不在模块或方法中书写重复的日志代码,如果日志需求一旦发生变化,不得不修改所有的日志代码
使用动态代理解决上述问题:
代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象取代原始对象,任何对原始对象的调用都要经过代理对象,代理对象决定将方法调用转到原始对象上面
面向切面原理(基于注解的方式和xml方式):
1、AOP(Aspect Oriented Programming)是一种新的方法论,是对传统OOP的补充
2、AOP的主要编程对象是“切面(Aspect)”,而切面模块化横切关注点
3、在进行AOP编程时,任然需要定义公共功能,但可以明确的定义这个公共功能在哪里以及如何应用。不必修改受影响的类,这样一来横切关注点就被模块化到对象(切面)里面。
AOP的好处:
1、每个事物逻辑位于一个位置,代码不分散,便于维护和升级
2、业务模块更简洁,只包含业务核心代码
实现步骤:
面向切面有五个通知类型:
1、环绕通知:包含前置、后置、返回、异常通知,类似于动态代理的全过程:
切面优先级问题:
注解:order:越小,优先级越高
定义一个方法。用于声明切入点表达式,一般地,该方法中不在写其他的代码
@Pointcut(“execution(* com.spring.aop.impl..(int,int))”)
public void declareJoinPoint(){}
@Before(“declareJoinPoint()”) // 引用了声明的切入点表达式(不同包下,可用包路径)
public void boforeMethod(JoinPoint joinPoint){
String methodName = joinPoint.getSignature().getName();
List args = Arrays.asList(joinPoint.getArgs());
System.out.println(“The method “+methodName+” begin with “+ args);
}
相关文章推荐
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理
- SpringAOP 面向切面编程
- AOP(Aspect Oriented Programming)面向切面编程及应用实例
- Spring面向切面编程(AOP)方式二
- Spring实践:面向切面编程(AOP)
- Spring框架(四)AOP面向切面编程
- 面向切面编程(AOP)的理解
- 面向切面编程(3):AOP实现机制
- Spring-aop面向切面编程
- Java - 解释一下什么叫AOP(面向切面编程)?
- (4.6.23.1)Android之面向切面编程:AOP 与 Aspect简介
- APP开发实战58-面向切面编程(AOP)
- 初入aop面向切面编程
- Spring基础、IOC(控制反转)、AOP(面向切面编程)、Log4j、注解配置
- Spring之AOP面向切面编程
- 使用Javassist对.class文件进行修改(AOP面向切面编程)
- 面向切面编程(AOP)
- Spring AOP——面向切面编程(下)
- 【C# / Pattern】C#中利用Attribute实现AOP(面向切面编程)
- 面向切面编程(AOP)的理解