我有会话范围的Spring bean和AOP CGLIB代理。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="restClient" class="com.test.services.RestClient" scope="session">
<constructor-arg ref="dataSource"/>
<aop:scoped-proxy /> <!--proxy-target-class="true" default is true to use cglib-->
</bean>
</beans>
在spring-aop-4.2.xsd中,它有<xsd:attribute name="proxy-target-class" type="xsd:boolean" default="true">
是否要创建基于类的(CGLIB)代理?这是默认值;在 为了切换到标准的基于Java接口的代理,请转一下 标志为“假”。
这意味着创建了默认的CGLIB代理。但我的maven项目没有CGLIB依赖我只有spring-context和spring-web,并且在依赖关系图中它有spring-aop但没有对cglib的传递依赖。我的项目编译并运行,没有这种依赖:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.1</version>
</dependency>
如果需要包含cglib依赖或spring-aop v4.2.5已经有重新打包cglib版本?
答案 0 :(得分:1)
Spring包含重新打包的cglib版本,仅使用此版本。你在类路径上使用的是什么版本的cglib并不重要。只设置标志很重要。