zoukankan      html  css  js  c++  java
  • SSH框架aop的切面表达式

    一:概述

    众所周知,Spring是一个轻量级的、非侵入式的、独立于各种应用服务器的开源框架。它的两大方面被人们所熟知,也应用很广。那就是IOC(控制反转)和AOP(面向方面编程)。

    IOC是开发者不创建对象,但是描述创建它们的方式,对象由Spring容器根据描述来产生对象,这里特别需要指出的是Spring是依赖于接口编程的,所以描述创建对象时,改对象必须实现于对应的接口

    AOP允许开发者对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

    二:实现

    目前在本人开发中用到的比较读多的是注解这一方案。


    首先在applicationXContext.xml中配置:

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="query*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="save*" propagation="REQUIRED" rollback-for="Throwable"/>
                <tx:method name="delete*" propagation="REQUIRED" rollback-for="Throwable"/>
                <tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable"/>
            </tx:attributes>
        </tx:advice>
       
        <aop:config>
            <aop:pointcut id="interceptorPointCuts"
                expression="execution(public * com.meth.server.estudy..*Service*.*(..))" />
            <aop:advisor advice-ref="txAdvice"
                pointcut-ref="interceptorPointCuts" />
        </aop:config>
    

    在该配置中aop切面表达式为:public * com.meth.server.estudy..*Service*.*(..)

    这点极为重要,为何我们只要拦截到Service层?你们是否有考虑过这个问题


    1.当你的表达式为拦截全部时,Hibernate级联就会失败

    2.其次Struts的对象不会被容器创建,需要你手动创建,否则界面交互操作会失败

    <aop:pointcut>中的expression属性起到了关键性的作用,它定义了哪些对象的哪些方法执行时被aop拦截

    3、理解Spring中的AOP代理可以从理解JDK的动态代理开始,也就是某个类去实现java.lang.reflect.InvocationHandler接口

  • 相关阅读:
    为什么我要用 Node.js? 案例逐一介绍
    不用 Twitter Bootstrap 的5个理由
    20个最强的基于浏览器的在线代码编辑器
    你需要了解 Windows Phone 8.1 的11件事
    你知道吗?什么是 Responsive JavaScript ?
    2014年最佳的10款 PHP 开发框架
    你知道吗?10个精妙的 Java 编码最佳实践
    知识笔记:jQuery 事件对象属性小结
    你知道吗?undefined 与 null 的区别
    Java开发者应该列入年度计划的5件事
  • 原文地址:https://www.cnblogs.com/Nonnetta/p/3314288.html
Copyright © 2011-2022 走看看