<aop:config>
    <aop:pointcut id="test"
expression="execution(* com.test.*.*(..))" />
     <aop:advisor advice-ref="txAdvice" pointcut-ref="test" />
</aop:config>
这样配置了是不是代表TEST包下的所有接口都已经配置完事务了,请大侠们解释下。我是菜鸟。
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
<tx:method name="is*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" read-only="false" />
    </tx:attributes>
</tx:advice>
请问:propagation="REQUIRED"这句是什么意思,为什么我这里不配置哪些方法需要事务,spring就已经把事务提交的啦。
<tx:method name="*" read-only="false" />请问这句是什么意思。
感谢了。

解决方案 »

  1.   

    1:propagation:事件传播,一般都为REQUIRED,意思是service包含多个dao单元操作时,归为一个事务管理。
    2:method name:这是dao方法名的通配符,好象是正则。上面不是有个execution(* com.test.*.*(..))" 统配吗,以这个结合就是一个具体的方法标识了。
    3: read-only:只读?不更改?更新类型操作当然不能只读了
      

  2.   

    wasaia 我再问一下:
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
     我这里不写任何方法,为什么事务都生效呢。
      </tx:attributes>
    </tx:advice>
    难道是它:<aop:advisor advice-ref="txAdvice" pointcut-ref="test" />propagation:事件传播,一般都为REQUIRED,意思是service包含多个dao单元操作时,归为一个事务管理。
    这里的意思是不是,在dao(TEST包下面的任意一个接口)里,要向数据库操作2次以上。这2次是一个事务。要么全部成功,要么全部失败。
      

  3.   

    <aop:pointcut id="test" expression="execution(* com.test.*.*(..))"/>
    使用该标签声明AOP的切点,简单来说可以将切点理解为AOP中连接点的匹配规则。在该实例中,切点定义为:com.test包下所有类(接口)的所有方法的执行,其中方法签名中的参数列表任意。
    Spring使用<aop:advisor advice-ref="txAdvice" pointcut-ref="test"/>来关联切点和通知(txAdvice)。
    Spring中使用<tx:advice>来声明AOP中的Advice。<tx:method/>标签声明什么样的方法是否需要事务或者需要什么样的事务类型。比如:
    <tx:method name="delete*" propagation="REQUIRED"/>就说明以delete开头的方法需要有事务来包围,但不一定是新开启的事务。
    举例来说,通过以上的关联,就存在这样一个关系:
    如果com.test包中有一个TestAction类,类中有一个deleteUser方法,在运行时,Spring便会根据切点和通知的声明,来在deleteUser方法的执行时将其包围在事务中。