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