在spring应用程序中禁用aop

wlp8pajw  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(418)

我有一个应用程序 spring-jdbc 依赖(也带来 spring-tx ). 我不使用hibernate,也不需要任何自动事务管理。它也是一个基于kotlin的应用程序,这意味着大多数类都是 final .
不幸的是 spring-tx 自动打开aop,它尝试为我的bean创建代理。失败的原因是 Could not generate CGLIB subclass of class ... Cannot subclass final class .
因为我不需要任何自动事务管理的特性,所以我想禁用aop、代理和tx管理。我该怎么做?

s3fp2yjn

s3fp2yjn1#

是的 PersistenceExceptionTranslationAutoConfiguration 这是在试图启用aop,而忽略了它的必要性。
禁用了:

@SpringBootApplication(
        exclude = {
                PersistenceExceptionTranslationAutoConfiguration.class
        }
)

大多数医生都说只能禁用 DataSourceTransactionManagerAutoConfiguration , HibernateJpaAutoConfiguration , TransactionAutoConfiguration 等等,但显然这还不够。
通常,完整配置可以是:

@SpringBootApplication(
        exclude = {
                DataSourceTransactionManagerAutoConfiguration.class,
                HibernateJpaAutoConfiguration.class,
                AopAutoConfiguration.class,
                JtaAutoConfiguration.class,
                TransactionAutoConfiguration.class,
                PersistenceExceptionTranslationAutoConfiguration.class
        }
)

似乎应该禁用所有与数据库相关的魔法。但就我而言 PersistenceExceptionTranslationAutoConfiguration 够了。

相关问题