它有Spring AOP重新包装的CGLIB版本

时间:2016-04-22 14:23:14

标签: spring spring-aop cglib

我有会话范围的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版本?

1 个答案:

答案 0 :(得分:1)

Spring包含重新打包的cglib版本,仅使用此版本。你在类路径上使用的是什么版本的cglib并不重要。只设置标志很重要。