码迷,mamicode.com
首页 > 编程语言 > 详细

spring aop的使用

时间:2016-10-24 20:14:24      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:class   技术分享   ack   数据库操作   三种方式   sys   额外   express   记录   

  使用上次整合的s2sh工程,加入aop的功能。aop(面向切面编程)是一种对oop的完善,比如在进行数据库操作的时候执行方法前或者后加入一条日志记录,使用一个额外的类去做日志操作,让dao类专注地做它自己的工作,使得类的代码更加简洁和专用化。

技术分享

package advice;

public class addAdvice {
    public void beforeAdvice(){
        System.out.println("==添加操作==");
    }
}
package advice;

public class deleteAdvice {
    public void beforeAdvice(){
        System.out.println("==删除操作==");
    }
}

    在applicationContext.xml中加入

<!-- 配置切面类-->
    <bean id="addAspect" class="advice.addAdvice"></bean>
    <!-- 配置切面类-->
    <bean id="deleteAspect" class="advice.deleteAdvice"></bean>
    <!-- 配置aop-->
    <aop:config>
        <!-- 配置切面-->
        <aop:aspect ref="addAspect">
            <!-- 切点表达式-->
            <aop:pointcut id="userAdvice1" expression="execution(* service.UserService.addService(..))"/>
            <aop:before method="beforeAdvice" pointcut-ref="userAdvice1"></aop:before>
        </aop:aspect>
    </aop:config>
    
    <aop:config>
        <!-- 配置切面-->
        <aop:aspect ref="deleteAspect">
            <!-- 切点表达式-->
            <aop:pointcut id="userAdvice2" expression="execution(* service.UserService.deleteService(..))"/>
            <aop:before method="beforeAdvice" pointcut-ref="userAdvice2"></aop:before>
        </aop:aspect>
    </aop:config>

    使用aop标签之前必须先加入dtd

xmlns:aop="http://www.springframework.org/schema/aop"

http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

 

    切面表示的是你要使用的那个通知类,通知类里面是对切点类的前后加入执行方法的类。切点类就是当这个类执行到指定方法的时候回执行切面类方法的类。

    切点表达式的第一个*表示任意返回值,可以把包后面的UserService改成*,这样就是对service下的所有方法执行切面方法。

    <aop:before/>是定义一个前置通知,还有其他三种方式就不介绍了。

技术分享技术分享

 

spring aop的使用

标签:class   技术分享   ack   数据库操作   三种方式   sys   额外   express   记录   

原文地址:http://www.cnblogs.com/chentingk/p/5993973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!