您的位置:首页 > 编程语言 > Java开发

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包)

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.*(..)
修饰符可省略,返回值用*通配注意空格,.. 表示子孙包,参数用..通配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: