Spring横切面(advice),增强(advisor),切入点(PointCut)的一点理解:

1.Spring管理事务有2种,其中一种是HibernateTransactionManager管理

<bean id="txManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

这样当定义切面时可以注入会话工厂属性如下:

<!-- 配置事务处理的Bean,定义切面(advice) -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="query*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
        </tx:attributes>
    </tx:advice>

2.对数据库的操作都属于事务的操作,而数据库默认是读已提交 read-only="true"形式

当读写操作时会调用DAO方法,而操作DAO的核心业务是Service,即 Spring,然而Spring

要对调用DAO的方法加以控制,所以就产生了切面(advice)   //这个切面相当于一道防护门。

3.切面(advice)有了,Spring自己会找到应该执行哪些DAO里的方法了,(因为DAO已经注入到了Spring中;即service层引用Dao层)

所以自身的防护就变得复杂了,所以需要紧密耦合,自然增强就产生了 。如下:

<!-- 配置AOP -->
  <aop:config>
        <aop:pointcut id="daoMethod" expression="execution(public * com.dvp.module.*.*.*.dao.impl..*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethod"/>
    </aop:config>

<aop:config>
        <aop:pointcut id="daoMethod2" expression="execution(public * com.dvp.base.dao.impl..*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethod2"/>
    </aop:config>

//OK所以一个Spring增强(advisor)=切面(advice)+切入点(PointCut)

Spring横切面(advice),增强(advisor),切入点(PointCut)(转)的更多相关文章

  1. Spring 通知(Advice)和顾问(Advisor)

    AOP ( Aspect  Oriented Programming  面向切面编程)  在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...

  2. 基于注解的Spring AOP入门、增强Advice实例

    这篇文章简单通过一个例子,介绍几种增强的基本配置,以方便spring框架初学者对aop的代码结构有个清楚的了解认识.首先,spring支持aop编程,支持aspectJ的语法格式来表示切入点,切面,增 ...

  3. Spring的3种切入点PointCut实现

    Pointcut是Join Point的集合,它是程序中需要注入Advice的位置的集合.Spring主要提供了3种切入点的实现: 1.静态切入点: 2.动态切入点: 3.自定义切入点. 静态切入点 ...

  4. Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut

    pointcut(切断点)表达式: execution(public * *(..)) execution(* set*(..)) execution(* com.xyz.service.Accoun ...

  5. Spring面向切面编程

    在使用面向切面编程时,我们可以在一个地方定义通用的共鞥,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类.横切关注点可以被模块化为特殊的类,这些类被称为切面.这样的优点是 ...

  6. Spring AOP 切面编程的方法

    spring aop的使用分为两种,一种是使用注解来实现,一种是使用配置文件来实现. 先来简单的介绍一下这两种方法的实现,接下来详细的介绍各处的知识点便于查阅.目录如下: 1.基于注解实现spring ...

  7. Spring Aop(八)——advisor标签

    转发地址:https://www.iteye.com/blog/elim-2396274 8 advisor标签 advisor标签是需要定义在aspect标签里面的,其作用与aspect类似,可以简 ...

  8. Spring 03 切面编程

    简介 AOP(Aspect Oriented Programming),即面向切面编程 这是对面向对象思想的一种补充. 面向切面编程,就是在程序运行时,不改变程序源码的情况下,动态的增强方法的功能. ...

  9. 利用cglib包实现Spring中aop的<aop:advisor>功能

    一:前言 还有<aop:before>/<aop:after>/<aop:around>的没有实现,不过根<aop:advisor>是差不多的,就是要额 ...

随机推荐

  1. The Info-Button Standard: Bring Meaningful Use To the Patient

    http://thehealthcareblog.com/blog/2010/01/28/the-info-button-standard-bringing-meaningful-use-to-the ...

  2. 输入框提示文字跨浏览器的placeholder-jQuery版

    <script type="text/javascript" src="jquery-1.7.2.min.js"></script> & ...

  3. 12款程序员们最爱的Bootstrap模板

    如果你还没有开始使用Bootstrap模板,那你可真是有够OUT,这是一个帮助你快速开发的工具,Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完 ...

  4. VB.NET版机房收费系统---外观层怎样写

    外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...

  5. Linux软件安装方法

    常用的两种软件安装方法: 1.RPM软件安装 rpm -qi 软件名 查询 rpm -ivh *.rpm 安装 rpm -e 软件名 卸载 系统自带的一些rpm包在系统镜像的Server文件夹里,需要 ...

  6. 每日一句英语:怎样回答美国人的How is it going问候语?

    和中国人"吃了吗"是一个性质,本质上仅仅是个话题的起始点,而不是真的想知道你吃了没有. 美国人打招呼有几种方式: 不太熟的人:How are you? 一 般说 pretty go ...

  7. 算法笔记_125:算法集训之编程大题集一(Java)

     目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式   1 砝码称重 ...

  8. oracle默认连接数150

    当oracle连接数超过最大的150登录不上 sqlplus / as sysdba   ###报错,提示连接数未释放! ---释放网络连接数 ps -ef |grep ora |grep " ...

  9. lua入门之二:c/c++ 调用lua及多个函数返回值的获取

    当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 同样类型的栈来交互. C 函数从栈中获取她的參数.调用结束后将返回结果放到栈中.为了区分返回结果和栈中的其它的值,每一个 C 函数还会返回结 ...

  10. poj 1156 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 51631   Accepted: 17768 Desc ...