`
福将1032
  • 浏览: 44556 次
文章分类
社区版块
存档分类
最新评论

Spring Aop Cglib 切没有接口的实现类

阅读更多

用kenoAspect去切 A1335_ValidPrize类的中volidVO,doaction方法 

 

cglib的jar包

    <!-- cglib统计用 -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.2</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <!-- cglib -->

 

spring 配置文件

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
           http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
       
          <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 
            <!-- 目标类 --> 

 <bean id="A1335_ValidPrize" class="com.joyveb.state.action.keno.A1335_ValidPrize"></bean>
           <!-- 切类 -->   

<bean id="kenoAspect" class="com.joyveb.state.action.keno.aspect.KenoAspect">
        </bean>
    <aop:config>
        <aop:aspect id="aspect" ref="kenoAspect">
            <aop:pointcut expression="execution(* com.joyveb.state.action.keno.A1335_ValidPrize.volidVO(..))" id="validprizeVO"/>
            <aop:after method="volidVO" pointcut-ref="validprizeVO"/>
            <aop:pointcut expression="execution(* com.joyveb.state.action.keno.A1335_ValidPrize.doAction(..))" id="validprizeDoAction"/>
            <aop:before method="doAction" pointcut-ref="validprizeDoAction"/>
        </aop:aspect>
   </aop:config>

 

自己可以写类 做测试

之前按网上说的加了个这个

 

< bean id =" proxy " class =" org.springframework.aop.framework.ProxyFactoryBean " >
- < property name =" proxyTargetClass " >
  < value > true </ value >
  </ property >
- < property name =" target " >
  < bean class =" com.joyveb.state.action.keno.aspect. kenoAspect" />
  </ property >
  </ bean >

 

只有 <aop:after  可以用 但之后就抛异常  不知道 问什么 删了就好了

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    spring_aop_cglib的实现方式

    在Spring AOP中,CGLIB代理的主要优点是它不需要目标对象实现任何接口,因此对于没有接口或者接口较少的类,CGLIB是一种很好的选择。然而,它的缺点是生成的代理类会稍微增加内存占用,且由于是通过继承实现,如果...

    Spring AOP面向切面三种实现

    而CGLIB代理则适用于无接口或非接口实现类,它通过字节码技术创建目标类的子类来实现代理。 2. **AspectJ切面** AspectJ是AOP的完整实现,比Spring的代理更强大。它可以编译时织入或加载时织入切面,提供更细粒度...

    Spring-AOP-JDK动态代理

    在Spring中,可以通过实现`org.aspectj.lang.annotation.Aspect`接口或者使用注解`@Aspect`来定义一个切面类。 2. **定义通知(Advice)**:通知是切面在特定连接点(Join Point,如方法调用)执行的代码。Spring...

    Spring AOP实现机制

    - 如果目标对象没有实现任何接口,Spring会使用CGLIB库创建一个目标对象的子类,并在子类中插入通知代码。 - CGLIB是通过字节码生成技术动态创建子类,因此无需目标对象实现接口。 ### 3. 自定义类加载器 在某些...

    springAop.rar_AOP java_cglib_spring aop

    当目标类没有实现接口或者为了性能考虑,通常会选择CGLIB作为代理机制。 CGLIB是一个强大的高性能的代码生成库,它在许多AOP的实现中被用到,比如Spring AOP。CGLIB使用字节码技术为一个类创建子类,并在子类中拦截...

    Spring AOP 16道面试题及答案.docx

    JDK代理适用于那些实现了接口的类,而CGLIB代理则适用于没有实现接口的类。 引介(Introduction)是Spring AOP的一个特性,允许在通知对象中声明并实现它们原本未实现的额外接口。通过`@DeclareParents`注解可以...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    如果被代理的类没有实现接口,Spring AOP会采用CGLIB来生成代理对象。CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中动态生成类和对象。 在Spring AOP中,我们通常使用@Aspect注解...

    spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.jar

    在Spring中,当一个类没有实现接口时,Spring会使用CGLIB来创建代理对象,以便在不修改原有代码的情况下,为对象添加额外的功能,如事务管理、性能监控等。CGLIB的repack版本是对原始CGLIB库的重新打包,目的是为了...

    spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.ja及ck-2.5.1.jar

    在Spring中,当目标对象不支持代理(如final类)或者没有接口时,Spring会使用CGLIB来生成代理对象,实现对目标对象的拦截和增强。"spring-cglib-repack-3.2.5.jar"是Spring项目对CGLIB的一个打包版本,方便在阅读...

    简单spring aop 例子

    JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或不希望使用接口的类。代理对象在调用目标方法时会执行切面逻辑。 2. **织入**:织入是将切面与应用程序代码结合的过程。Spring支持三种织入时机:编译时、...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    CGLIB 动态代理则是在运行时生成一个目标对象的子类,如果目标对象没有实现接口,Spring 将使用 CGLIB 作为默认的代理方式。CGLIB 通过 `net.sf.cglib.proxy.Enhancer` 和 `Callback` 来创建代理对象。`Enhancer` 是...

    spring-cglib-repack-3.2.0.jar和spring-objenesis-repack-2.1.jar

    在Spring AOP(面向切面编程)中,当无法为一个类创建代理(例如,因为该类没有接口)时,CGILib就派上了用场。它通过动态生成一个类的子类,并在其中插入拦截器方法,以此来实现对原始类方法的增强。Spring使用...

    spring AOP切面编程

    2. CGLIB代理:如果目标对象没有实现接口,Spring会使用CGLIB库动态生成一个子类,并在子类中插入通知。 三、AOP的配置与使用 1. 配置方式:可以通过XML配置或注解方式进行。XML配置中,`&lt;aop:config&gt;`定义切面,`...

    springAop的配置实现

    - 如果目标类没有实现接口,Spring AOP会使用CGLIB代理。CGLIB是一个强大的高性能的代码生成库,它会在运行期动态生成子类并覆盖父类的方法来实现AOP的功能。 **4. 配置Spring AOP** 在Spring XML配置文件中,我们...

    Spring Aop四个依赖的Jar包

    总的来说,Spring AOP通过这四个关键的Jar包,结合AspectJ的强大功能和CGLIB的代理机制,为开发者提供了强大的面向切面编程支持,使得我们可以在不侵入原有业务代码的情况下,实现跨切面的关注点管理。

    spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.5.1.jar

    当Spring框架在进行AOP代理时,如果目标类没有实现接口,它会选择使用CGLIB来创建一个子类并动态地插入拦截器方法。CGLIB通过字节码操作技术生成代理类,这样就可以在运行时扩展或修改已有类的功能,而无需修改原始...

    springAOP配置动态代理实现

    2. **CGLIB动态代理**:如果目标类没有实现接口,Spring会使用CGLIB库创建一个目标类的子类,子类覆盖目标类的方法并在方法调用前后插入通知。CGLIB代理提供了更广泛的应用场景,但相比JDK动态代理,它的性能稍差。 ...

    spring-cglib-repack-3.2.5.jar和spring-objenesis-repack-2.6.jar

    CGLIB使得Spring能够对非接口类进行AOP代理,扩大了面向切面编程的应用范围。Objenesis则为Spring提供了快速创建对象的能力,尤其在测试环境中,避免了对复杂初始化逻辑的依赖。 在实际项目中,当开发者引入Spring...

    spring aop 五个依赖jar

    在Spring AOP中,如果目标类没有实现接口,Spring会使用CGLIB创建一个代理对象来实现切面功能。CGLIB-nodep是无依赖版本,不包含ASM库,但通常Spring会自行处理ASM的依赖。 5. **aopalliance-1.0.jar**:AOP ...

    spring-cglib-repack-3.2.6.jar,spring-objenesis-repack-2.6.jarspring-cglib-repack

    在Spring框架中,CGLIB被广泛用于AOP(面向切面编程)代理。当目标对象不支持接口或者为了提高性能时,Spring会使用CGLIB代理来创建代理对象。`spring-cglib-repack-3.2.6.jar` 包含了CGLIB库的重新打包版本,可能包含...

Global site tag (gtag.js) - Google Analytics