防止在春季忘记配置事务

时间:2010-04-21 16:51:42

标签: java spring

有没有办法让bean在spring框架中不可用?我想确保如果开发人员忘记在Spring框架中围绕服务包装事务,该服务应该在运行时变得不可用。 谢谢,

1 个答案:

答案 0 :(得分:1)

你可以用AOP做这样的事情。但相反,您可以使用AOP为每个服务方法添加自动事务:

<!-- proxy-target-class should be true, if you don't use interfaces -->
<aop:config proxy-target-class="false">
    <aop:pointcut id="serviceMethods"
        expression="execution(* com.yourproject.services..*.*(..))" />

    <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
</aop:config>

<tx:advice id="txAdvice" transaction-manager="yourTransactionManager">
    <tx:attributes>
        <tx:method name="*" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>

您可以使用@Transactional覆盖这些默认设置。但是,建议优先级不是直截了当的。检查一下this article