Spring aop Cannot subclass final class class com.sun.proxy

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘bean‘: Post-processing of the FactoryBean‘s object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate
CGLIB subclass of class [class com.sun.proxy.$Proxy42]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class com.sun.proxy.$Proxy42

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)

<aop:aspectj-autoproxy proxy-target-class="true"/>

红色部分去掉

时间: 2024-08-30 14:44:01

Spring aop Cannot subclass final class class com.sun.proxy的相关文章

Cannot subclass final class class com.sun.proxy.$Proxy

背景 这个错误是我在使用AOP动态切换数据库,实现数据库的读写分离的时候出现的问题,使用到的系统环境是: <spring.version>3.2.6.RELEASE</spring.version> <mybatis.version>3.2.4</mybatis.version> <mybatis-spring.version>1.1.1</mybatis-spring.version> 使用的代码 执行切点的代码是: package

spring aop(四)

直接找到解析aop标签的方法: 1 protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { 2 if (delegate.isDefaultNamespace(root)) { 3 NodeList nl = root.getChildNodes(); 4 for (int i = 0; i < nl.getLength(); i++) { 5 Node node = n

死磕Spring AOP系列4:剖析AOP schema方式原理

这个是<死磕Spring AOP系列>第4个.已经讲过的内容 死磕Spring AOP系列3:剖析Bean处理器之DefaultAdvisorAutoProxyCreator 死磕Spring AOP系列2:剖析Bean处理器之BeanNameAutoProxyCreator 死磕Spring AOP系列1:编程式实现AOP 通过前3篇,大家应该可以清楚的知道:AOP代理原理有3元素 BeanPostProcessor,作为代理对象初始入口 Advisor&Pointcut&M

Spring AOP原理

Spring利用动态代理技术实现了AOP增强功能.这个动态代理是通过Java的动态代理或CGLIB技术实现.具体根据代理对象实现的是类或者接口来决定. Spring AOP的过程跟我们平时使用动态代理的过程是很相似的,只不过它帮助我们自动组装了增强方法与代理对象,这样我们就可以更加灵活,因为我们可以选择增强触发的时机,而且更加关注我们要做的事情.从原理以及源代码的角度,整个过程还是分为两个阶段, 第一个阶段是生成代理对象,这个过程根据代理对象是否实现了接口来选择使用不同的工厂生成代理对象. 第二

Spring技术内幕:Spring AOP的实现原理(三)

生成SingleTon代理对象在getSingleTonInstance方法中完成,这个方法时ProxyFactoryBean生成AopProxy对象的入口.代理对象会封装对target目标对象的调用,也就是说针对target对象的方法调用行为会被这里生成的代理对象所拦截.具体的生成过程是首先读取ProxyFactoryBean配置,为生成代理对象做好准备.Spring通过AopProxy类来具体生成代理对象.对于getSingleTonInstance方法中生成代理对象的过程如下: /** *

Spring AOP中提供的种种Aspects - 并发控制

本文继续讨论ConcurrencyThrottleInterceptor(基于Spring 4.3.7).以及上一篇文章中遗留的一个关于SimpleAsyncTaskExecutor类中属性concurrencyLimit的问题. 这些都和并发控制相关.但是这里需要事先说明的一点是,这些类和实现的年代都比较久远了,比如ConcurrencyThrottleInterceptor是在2004年的Spring 1.x中就存在了,那个年代还没有JDK中的java.util.concurrent并发包.

Spring AOP 不同配置方式产生的冲突问题

Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理:后者实际上是生成一个子类,来覆盖被代理类,那么父类的final方法就不能代理,因为父类的final方法不能被子类所覆盖.一般而言Spring默认优先使用JDK动态代理技术,只有在被代理类没有实现接口时,才会选择使用CGLIB技术来实现AOP. 但是也提供了配置参数来强制选择使用 CGLIB 技术,如下: <aop:config proxy-ta

浅析Spring AOP(面向方面编程)

SpringAOP提供的优势 1.允许开发者声明企业级服务,比如:事务服务.安全性服务.EJB组件能够使用J2EE容器提供声明式服务.但是需要借助于EJB组件,而SpringAOP却不需要EJB容器,即借助于Spring的事务抽象框架能够在EJB容器外部使用企业级.声明式服务. 2.开发者可以开发满足业务需求的自定义方面.类似于JBOSS服务器中拦截器开发一样,如果标准的J2EE安全性不能满足业务需求,则必须开发拦截器. 3.开发SpringAOP advice很方便,这些AOP Advice不

springaop问题——Cannot subclass final class org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages

问题描述: 在使用springaop对目标对象增强时,若切点的条件过于宽泛就会出现以下异常! 如: @Before("execution(* *(..))") @Before("args(..)") @Before("within(org..*)") ... org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spr