想象一下一个使用Spring、JDBC和AOP的事务性多线程Java应用程序,其中有n个类在m个包中参与数据库事务。现在假设需要将任意一组类限定在一个事务范围内。此外,在该范围内始终存在一个类T,当其被调用时会提交事务。
为了更清晰地说明,让我举个例子: 给定包A、B、Z和类A.Foo、B.Bar和Z.T。 分别调用了以下各自类的实例(可能由不同的调用者调用,中间还有其他类):A.Foo、B.Bar、A.Foo和Z.T。 只有在调用Z.T之后,事务才会被提交。如果应用程序因任何原因关闭,则除非涉及到Z.T,否则事务将永远不会被提交。
实例可以相互调用,并且如前所述,没有共同的入口点从单个入口点调用所有实例(例如服务层),这使得Spring的事务标签成为易于处理的目标。
现在问题是:是否可以使用切面解决此问题?如果可以,基本方法是什么? 谢谢。
为了更清晰地说明,让我举个例子: 给定包A、B、Z和类A.Foo、B.Bar和Z.T。 分别调用了以下各自类的实例(可能由不同的调用者调用,中间还有其他类):A.Foo、B.Bar、A.Foo和Z.T。 只有在调用Z.T之后,事务才会被提交。如果应用程序因任何原因关闭,则除非涉及到Z.T,否则事务将永远不会被提交。
实例可以相互调用,并且如前所述,没有共同的入口点从单个入口点调用所有实例(例如服务层),这使得Spring的事务标签成为易于处理的目标。
现在问题是:是否可以使用切面解决此问题?如果可以,基本方法是什么? 谢谢。