Java Spring事务和AOP代理
在许多文章中,我阅读了以下“Spring的声明性事务是通过AOP代理启用的” 对于像我这样的新手,这到底意味着什么 在什么类型的类或bean上可以使用@Transactional注释 我必须在POM.xml中添加maven依赖项“spring aop”吗 为了使事务工作,是否明确需要@EnableTransactionManagement?已经有了一些关于Java Spring事务和AOP代理,java,spring-boot,transactions,aop,Java,Spring Boot,Transactions,Aop,在许多文章中,我阅读了以下“Spring的声明性事务是通过AOP代理启用的” 对于像我这样的新手,这到底意味着什么 在什么类型的类或bean上可以使用@Transactional注释 我必须在POM.xml中添加maven依赖项“spring aop”吗 为了使事务工作,是否明确需要@EnableTransactionManagement?已经有了一些关于@Transactional做什么以及如何工作的详细信息 关于你的其他问题 在什么类型的类或bean上可以使用@Transactional注释
@Transactional
做什么以及如何工作的详细信息
关于你的其他问题
在什么类型的类或bean上可以使用@Transactional
注释
从理论上讲,每节课你都想要。你应该这样做吗?不。例如,制作web层,事务边界通常被认为是一个坏主意,因为事务边界应该是你的服务层
我必须在pom.xml
中添加maven依赖项springaop
不可以。spring tx的依赖项本身就已经拉住了这一点。当使用spring boot starter数据jpa
(或另一个与持久性相关的数据)时,它也将自动包括在内
为了使事务正常工作,是否明确需要@EnableTransactionManagement
视情况而定。一般来说,在SpringBoot应用程序中,您不需要添加此选项,因为SpringBoot将自动启用此选项。如果您不使用Spring Boot,而只是一个普通的Spring应用程序,那么在使用XML通知Spring处理@Transactional
注释时,您需要添加@EnableTransactionManagement
或
。是否回答了您的问题?是的,这回答了我的大部分问题。这是否回答了您的问题?@Transactional注释可以在任何类上使用吗?例如,在我必须维护的应用程序上,事务性注释用于控制器类(用RestController注释的类)。我们经常有以下例外:“javax.persistence.TransactionRequiredException:执行更新/删除查询”理论上你可以,如果你没有的话。注释你的控制器通常是个坏主意,因为服务层是你的事务边界,而不是你的web层。所以,这意味着TransactionRequiredException不是因为DB访问是在控制器类中完成的,对吗?