Java Spring事务和AOP代理

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注释

在许多文章中,我阅读了以下“Spring的声明性事务是通过AOP代理启用的”

对于像我这样的新手,这到底意味着什么

在什么类型的类或bean上可以使用@Transactional注释

我必须在POM.xml中添加maven依赖项“spring aop”吗

为了使事务工作,是否明确需要@EnableTransactionManagement?

已经有了一些关于
@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访问是在控制器类中完成的,对吗?