• The bean 'xxx' could not be injected as a 'com.zp.demo.service.xxx' because it is a JDK dynamic proxy that implements: com.zp.demo.service.ReportService


    springboot 使用事务报错

    报错信息:

    Description:
    
    The bean 'reportImpl' could not be injected as a 'com.zp.demo.service.Impl.ReportImpl' because it is a JDK dynamic proxy that implements:
        com.zp.demo.service.ReportService
    
    
    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.

    解决方法:

    ①在启动类上添加@EnableAspectJAutoProxy(proxyTargetClass = true)注解:

    @Configuration
    @SpringBootApplication
    @EnableTransactionManagement(proxyTargetClass = true) //开始事务
    public class DemoApplication {
    
    
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }

    ②在报错的service上添加@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)注解:

    @Service
    @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class ReportImpl{
     
     
    
    }

     分析ScopedProxyMode可以发现不同的参数值就对应了不同的代理类型。

    public enum ScopedProxyMode {
     
        /**
         * Default typically equals {@link #NO}, unless a different default
         * has been configured at the component-scan instruction level.
         */
        DEFAULT,
     
        /**
         * Do not create a scoped proxy.
         * <p>This proxy-mode is not typically useful when used with a
         * non-singleton scoped instance, which should favor the use of the
         * {@link #INTERFACES} or {@link #TARGET_CLASS} proxy-modes instead if it
         * is to be used as a dependency.
         */
        NO,
     
        /**
         * Create a JDK dynamic proxy implementing <i>all</i> interfaces exposed by
         * the class of the target object.
         */
        INTERFACES,
     
        /**
         * Create a class-based proxy (uses CGLIB).
         */
        TARGET_CLASS;
     
    }
  • 相关阅读:
    谜题92:双绞线
    谜题91:序列杀手
    谜题90:荒谬痛苦的超类
    谜题89:泛型迷药
    谜题88:原生类型的处理
    谜题87:紧张的关系
    谜题86:有毒的括号垃圾
    谜题85:惰性初始化
    谜题84:被粗暴地中断
    easyUi DataGrid
  • 原文地址:https://www.cnblogs.com/nongzihong/p/12107341.html
Copyright © 2020-2023  润新知