zoukankan      html  css  js  c++  java
  • spring tx:advice 和 aop:config 配置事务

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                         http://www.springframework.org/schema/beans/spring-beans.xsd
                         http://www.springframework.org/schema/tx
                         http://www.springframework.org/schema/tx/spring-tx.xsd
                         http://www.springframework.org/schema/aop
                         http://www.springframework.org/schema/aop/spring-aop.xsd "
    >
    
    <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"
            abstract="false" lazy-init="default" 
            dependency-check="default">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="add*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="add*" propagation="REQUIRED" />
                <!-- <tx:method name="*" propagation="true" />-->
            </tx:attributes>
    
        </tx:advice>
    
        <aop:config>
            <aop:pointcut id="allManagerMethod"
                expression="execution(* com.service.*.*(..))" />
            <aop:advisor advice-ref="txAdvice"
                pointcut-ref="allManagerMethod" />
        </aop:config>
    </beans>
    
    
    Eclipse不能识别<tx:advice/>标签
    
    在开发Spring的过程中,有时会出现Eclipse不能识别<tx:advice/>标签。
    
    提示出现以下错误:
    
    The prefix "tx" for element "tx:advice" is not bound
    
    
    
    这个错误的原因很简单是:
    
    我们在定义申明AOP的时候。。没有加载schema。
    
    具体表现如下:
    
    <beans>
    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
         <tx:attributes>
             <tx:method name="get*" read-only="true"/>
             <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/>
         </tx:attributes>
    </tx:advice>
    
    <!-- aop代理设置-->
    <aop:config proxy-target-class="true">  
    ....
    
    </aop:config>
    
    </beans>
    
    这时会抛出异常不认<TX>标签。。起先还以为是没有加载JAR包呢。。
    
    后来读AOP文档才发现<beans>中要加入“xmlns:aop”的命名申明,并在“xsi:schemaLocation”中指定aop配置的schema的地址
    
    配置文件如下:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans "
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
    xmlns:aop="http://www.springframework.org/schema/aop "
    xmlns:tx="http://www.springframework.org/schema/tx "
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                         http://www.sp
  • 相关阅读:
    rsyslog 只读取变化的日志
    Invalid component element. Instead of passing a string like 'div', pass React.createElement('div')
    Java 并发之 CountDownLatch、CyclicBarrier 和 Semaphore
    JUC (Java Util Concurrency) 基础内容概述
    浅析Java中CountDownLatch用法
    java 多线程 CountDownLatch用法
    基于Netty的“请求-响应”同步通信机制实现
    响应头location 页面跳转
    8.1 Optimization Overview
    论人不地道,我只佩服TT——北漂18年(68)
  • 原文地址:https://www.cnblogs.com/zfdai/p/3573880.html
Copyright © 2011-2022 走看看