aop(面向切面)编程思想在spring框架下实现的配置方法
2017-08-09 22:48
603 查看
aop是一种编程思想,强调的是消除重复代码和对已有方法进行动态增强。它将重复代码进行横向抽取,利用代理技术对重复代码进行整合,以达到消除重复代码,增强方法功能。而在spring框架下spring提供了相应的管理方法我们只需进行一定的配置即可实现aop编程。应用aop编程首先就是要导相关jar包和依赖包,需要的包有4(spring的core包、beans包、context包、spel包)+2(spring依赖包的logging日志包、log4j包)+1(spring的aop包)+1(spring的aspect包)+1(spring依赖包的aopallicance)+1(spring依赖包的weaver包)
利用<bean>标签将目标对象配置到spring容器中
例:
(2)、将代理对象配置到spring容器中
利用<bean>标签将代理对象配置到spring容器中
例:
配置切面前首先要配置切入点,目的是让spring找到相应的要整合或增强的方法;然后配置切面
此处配置同上一种配置在此不再赘述
(2)、开启aspectJ的自动代理,以完成织入
<aop:aspectj-autoproxy></ aop:aspectj-autoproxy>
(3)、在通知类中配置通知
完成xml中配置的准备工作后要在通知类中通过注解对通知类进行配置,
@Aspect:类名上的注解,标注此类为通知类
@Pointcut(execution(public void com.company.projectservice.impl.ServiceImpl.action())
public viod pct(){}//通常为了方便coding写这样一个空方法来配置切点而省去重复配置切点
@Before(“MyAdvice.Pct()”):方法名上的注解,前置通知
@After(“MyAdvice.Pct()”):方法名上的注解,后置通知,不会异常阻断
@AfterReturning(“MyAdvice.Pct()”):方法名上的注解,后置通知,会被异常阻断
@Around(“MyAdvice.Pct()”):方法名上的注解,环绕通知(方法中间用ProceedingJoinPoint的proceed方法截断,以区分前置绕和后置环绕)
@Throwing(“MyAdvice.Pct()”)方法名上的注解,异常拦截通知(只有在出现异常时才会通知)
注:一般为了提高效率会把expression表达式配置为通配形式:
* com.company.project.service.impl..*Impl.*(..)
修饰符可省略,返回值用*通配注意空格,.. 表示子孙包,参数用..通配
1、通过applicationContext.xml文件进行配置
(1)、将目标对象配置到spring容器中利用<bean>标签将目标对象配置到spring容器中
例:
<bean name="userService"class="com.company.project.service.impl.ServiceImpl"/>
(2)、将代理对象配置到spring容器中
利用<bean>标签将代理对象配置到spring容器中
例:
<bean name="myAdvice"class="com.company.project.service.MyAdvice"/>
(3)、配置切面
配置切面前首先要配置切入点,目的是让spring找到相应的要整合或增强的方法;然后配置切面
<aop:config> <aop:poincut expression="execution(public void com.company.project.service.impl.ServiceImpl.action())"id="pc"/>//切入点 <aop:aspect ref="userService"> <aop:before method="beforeAdvice”point-ref="pc">//前置通知 </aop:aspect>//切面。 </aop:config>
2、通过注解配合applicationContext.xml文件进行配置
(1)、在xml中先将切点和通知配置到spring容器中此处配置同上一种配置在此不再赘述
(2)、开启aspectJ的自动代理,以完成织入
<aop:aspectj-autoproxy></ aop:aspectj-autoproxy>
(3)、在通知类中配置通知
完成xml中配置的准备工作后要在通知类中通过注解对通知类进行配置,
@Aspect:类名上的注解,标注此类为通知类
@Pointcut(execution(public void com.company.projectservice.impl.ServiceImpl.action())
public viod pct(){}//通常为了方便coding写这样一个空方法来配置切点而省去重复配置切点
@Before(“MyAdvice.Pct()”):方法名上的注解,前置通知
@After(“MyAdvice.Pct()”):方法名上的注解,后置通知,不会异常阻断
@AfterReturning(“MyAdvice.Pct()”):方法名上的注解,后置通知,会被异常阻断
@Around(“MyAdvice.Pct()”):方法名上的注解,环绕通知(方法中间用ProceedingJoinPoint的proceed方法截断,以区分前置绕和后置环绕)
@Throwing(“MyAdvice.Pct()”)方法名上的注解,异常拦截通知(只有在出现异常时才会通知)
注:一般为了提高效率会把expression表达式配置为通配形式:
* com.company.project.service.impl..*Impl.*(..)
修饰符可省略,返回值用*通配注意空格,.. 表示子孙包,参数用..通配
相关文章推荐
- JavaEE手写AOP实现,自动代理, AOP 面向切面的编程思想
- (精简)Spring框架的IoC(替代工厂类实现方法)和AOP(定义规则,约定大于配置)
- js实现面向切面的编程(AOP)
- spring_由注解实现AOP面向切面编程_实现动态代理
- AOP基础知识及AOP切面编程之注释方法、xml配置方法
- Aop_面向切面编程_思想理解资料02 .
- Spring AOP的基本原理及面向切面编程的实现
- 重新学习之spring第二个程序,配置AOP面向切面编程
- Spring3.0 学习-AOP面向切面编程_Spring AOP的XML配置模式
- spring_由XML实现AOP面向切面编程_实现动态代理
- AOP面向切面编程思想的原理(简单理解)
- Java实现AOP面向切面编程的实例教程
- 面向切面编程AOP:基于XML文件的配置
- Spring AOP 面向切面编程 常见通知实现(前置,后置,环绕,异常)
- spring学习笔记8--使用spring进行面向切面的(AOP)编程(2)XML配置方式
- spring AOP面向切面编程的四种实现方式
- 黑马程序员--Spring Aop 面向切面编程,实现前置通知
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Java实现AOP面向切面编程的实例教程
- js实现面向切面的编程(AOP)