Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies 问题解决

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

问题描述

Spring Boot 项目,启用事务支持时出现以下错误:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with ‘debug’ enabled.

2018-12-28 09:19:09.467 ERROR 1105 — [ main] o.s.b.d.LoggingFailureAnalysisReporter :


APPLICATION FAILED TO START


Description:

The bean ‘departmentDao’ could not be injected as a ‘com.wanyu.fams.dao.DepartmentDao’ because it is a JDK dynamic proxy that implements:

Action:

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.在这里插入图片描述

也就是添加了一个注解:@Transactional // 启用事务处理,启动的时候就报错了。

解决方法
在 application.properties 或者 application.yml 配置文件中添加配置:

以下为 application.properties 中的配置方法:

解决问题


spring.aop.proxy-target-class=true

application.yml 写法有点不同:

spring:
  aop:
    proxy-target-class: true

失败的尝试

有文章指出:在springboot启动类中添加如下代码,最终解决问题,我尝试失败,错误依旧!

@Bean
    @ConditionalOnMissingBean
    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
    
    
        DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();
        daap.setProxyTargetClass(true);
        return daap;
    }

猜你喜欢

转载自blog.csdn.net/david2000999/article/details/124582799