- 浏览: 148275 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
十一 使用CGLIB实现AOP功能与AOP概念解释 前面的proxy技术必须在类实现了接口的前提下才可以实现权限的控制,cglb可以在类不实现接口的情况下完成。 在spring文件夹下lib/cglib下找到cglib的jar库文件,加入工程。 CGlibProxyFactory.java view plaincopy to clipboardprint? 01.package cn.pf.aop; 02. 03.import java.lang.reflect.Method; 04. 05.import cn.pf.aop.service.impl.PersonServiceBean; 06. 07.import net.sf.cglib.proxy.Enhancer; 08.import net.sf.cglib.proxy.MethodInterceptor; 09.import net.sf.cglib.proxy.MethodProxy; 10. 11.public class CGlibProxyFactory implements MethodInterceptor{ 12. private Object targetObject; 13. 14. public Object createProxyIntance(Object targetObject){ 15. this.targetObject = targetObject; 16. Enhancer enhancer = new Enhancer(); 17. enhancer.setSuperclass(this.targetObject.getClass()); 18. enhancer.setCallback(this); 19. return enhancer.create(); 20. } 21. 22. @Override 23. public Object intercept(Object proxy, Method method, Object[] arg2, 24. MethodProxy arg3) throws Throwable { 25. PersonServiceBean personServiceBean = (PersonServiceBean)targetObject; 26. Object result = null; 27. if(personServiceBean.getUser() != null){ 28. result = method.invoke(targetObject, arg2); 29. } 30. return result; 31. } 32.} package cn.pf.aop; import java.lang.reflect.Method; import cn.pf.aop.service.impl.PersonServiceBean; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class CGlibProxyFactory implements MethodInterceptor{ private Object targetObject; public Object createProxyIntance(Object targetObject){ this.targetObject = targetObject; Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(this.targetObject.getClass()); enhancer.setCallback(this); return enhancer.create(); } @Override public Object intercept(Object proxy, Method method, Object[] arg2, MethodProxy arg3) throws Throwable { PersonServiceBean personServiceBean = (PersonServiceBean)targetObject; Object result = null; if(personServiceBean.getUser() != null){ result = method.invoke(targetObject, arg2); } return result; } } AOPTest.java view plaincopy to clipboardprint? 01.@Test public void proxyTest2(){ 02. CGlibProxyFactory factory = new CGlibProxyFactory(); 03. PersonServiceBean personServiceBean = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("1")); 04. personServiceBean.save("111"); 05. } @Test public void proxyTest2(){ CGlibProxyFactory factory = new CGlibProxyFactory(); PersonServiceBean personServiceBean = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("1")); personServiceBean.save("111"); } CGlib的enhance继承了目标类所有非final方法,对这些方法进行覆盖。创建的代理对象是目标对象的子类 完毕 end!
发表评论
-
十八 Spring2.5+Hibernate3.3+Struts2整合开发
2011-07-04 17:16 825十八 Spring2.5+Hibernate3.3+Strut ... -
十七 Spring2.5+JPA+Struts1.3整合开发
2011-07-04 17:16 1257十七 Spring2.5+JPA+Struts1.3整合开发 ... -
十六 Spring2.5+Hibernate3.3+Struts1.3整合开发
2011-07-04 17:13 913十六 Spring2.5+Hibernate3.3+Strut ... -
十五 用xml方式配置事务
2011-07-04 17:11 843十五 用xml方式配置事务 ... -
十四 spring容器的声明式事务管理
2011-07-04 17:10 983spring在运行期(unchecked ... -
十三 Spring+JDBC组合开发
2011-07-04 17:09 971十三 Spring+JDBC组合开发 ... -
十二 spring的AOP编程
2011-07-04 17:06 1388Aspect(切面):指横切性关 ... -
十 使用JDK中的Proxy技术实现AOP功能
2011-07-04 17:03 817十 使用JDK中的Proxy技术实现AOP功能 通过代理 ... -
九 自动扫描和管理bean
2011-07-04 17:02 766九 自动扫描和管理bean ... -
八 @Autowire注解与自动装配
2011-07-04 17:01 878使用了@Autowired的注解方式,这种默认按类型查找符合的 ... -
七 编码剖析@Resource注解的实现原理
2011-07-04 17:00 1104七 编码剖析@Resource注解的实现原理 Itcas ... -
六 用@Resource注解完成属性装配
2011-07-04 16:58 1848六 用@Resource注解完成属性装配 java代 ... -
五 依赖注入
2011-07-04 16:57 759五 依赖注入 1>set注入方式 1 对象注入 ... -
四 spring管理bean的作用域
2011-07-04 16:57 953四 spring管理bean的作用域 先看配置 < ... -
三 实例化bean的方法
2011-07-04 16:56 721三 实例化bean的方法 1接口 package cn. ... -
二 开启spring之旅
2011-07-04 16:55 7191 首先下载spring 最佳答案 版本2.5.6,官 ... -
一 spring的介绍
2011-07-04 16:54 7001 Spring是什么 Spring是一个开源的控制反转(I ... -
Spring学习笔记(4)----Bean节点信息配置
2010-10-29 16:53 792默认情况下,Spring的Ioc容器启动时会初始化bean ... -
Spring学习笔记(3)----编码剖析Spring管理Bean的原理
2010-10-29 16:47 728Xml代码 <?xml versio ... -
Sping学习笔记(2)----实例化Bean的三种方式
2010-10-29 16:45 842Spring的实例化Bean有三种方式: 使用类构造器 ...
相关推荐
Spring AOP实现方法之一:CGLIB 实现AOP功能
本篇将深入探讨如何使用JDK的动态代理和CGLIB库来实现Spring中的AOP功能。 首先,我们来看JDK中的Proxy技术。JDK Proxy是Java提供的一种动态代理机制,它允许我们在运行时创建一个实现了特定接口的新类。这个新类...
在本篇Spring学习笔记中,我们将探讨如何使用CGLIB库来实现AOP功能。 CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它被广泛用于动态代理和运行时织入AOP切面。在Spring中,如果目标类没有...
总的来说,JavaEE CGLIB字节码增强方式提供了一种灵活的手段来实现AOP编程,它通过动态生成字节码创建目标类的子类,实现了对目标方法的拦截和增强,从而在不修改原有代码的基础上,增强了代码的功能和可维护性。...
基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...
下面我们将深入探讨Spring AOP如何利用CGLIB以及CGLIB的相关概念。 首先,Spring AOP的核心是通过代理来实现切面功能。代理可以分为两种类型:基于接口的JDK动态代理和基于类的CGLIB代理。JDK动态代理要求目标对象...
静态代理--不适合企业开发,适合初学者理解代理。 jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口...spring 的AOP功能中 会根据目标类是否实现了接口来判断使用 jdk Proxy还是cglib
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换 如何强制使用CGLIB实现AOP? * 添加CGLIB库,SPRING_HOME/...
Spring框架中的AOP模块使用了动态代理来实现AOP概念。Spring AOP允许开发者定义切面,并在这些切面中指定拦截的方法。Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,...
CGLIB是一个强大的高性能的代码生成库,它在许多AOP的实现中被用到,比如Spring AOP。CGLIB使用字节码技术为一个类创建子类,并在子类中拦截方法调用,从而实现代理。CGLIB生成的子类是动态的,因此在编译时并不存在...
标题中的"AOP-CGLIB学习-实现简单的注解权限系统"指的是使用Spring的面向切面编程(AOP)特性,结合CGLIB库来创建一个基于注解的权限控制系统。在这个系统中,通过CGLIB动态代理技术,可以对带有特定注解的方法进行...
在XML配置中,我们需要定义`<aop:config>`标签来开启AOP功能,然后使用`<aop:aspect>`定义切面,`<aop:before>`、`<aop:after>`、`<aop:around>`等标签定义通知(advice),最后通过`<aop:pointcut>`定义切入点...
在Spring AOP中,CGLIB被用来创建代理对象,当目标对象没有实现接口时,Spring会使用CGLIB来动态生成子类,以此实现对目标对象的代理。CGLIB的使用避免了反射带来的性能损失,提高了代理效率。 CGLIB的工作原理: ...
在Java领域,Spring框架是实现AOP功能的重要工具,它允许开发者定义“切面”来封装横切关注点,如日志、事务管理等,从而将这些通用功能与核心业务逻辑分离。 1. **Spring AOP**: Spring AOP是Spring框架的一部分,...
在这个例子中,我们将探讨如何使用动态代理来实现一个简单的Spring AOP功能。 动态代理是Java提供的一种机制,它允许我们在运行时创建对象的代理,该对象可以代表原对象执行额外的操作。在Spring AOP中,有两种主要...
8. **使用代理**:解释JDK动态代理和CGLIB代理的区别,以及Spring如何根据目标类是否实现了接口来选择合适的代理方式。 9. **配置AOP**:介绍如何在Spring的XML配置文件或Java配置中启用AOP,并声明切面。 10. **...
AOP为开发者提供了在不修改源代码的情况下,对程序进行功能增强的能力,使得我们可以更方便地处理如日志记录、事务管理、权限控制等横切关注点。 首先,我们来理解一下AOP的基本概念。AOP的核心是切面(Aspect)和...
在Java世界中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种设计模式,它允许程序员在不修改源代码的情况下,插入新的行为或增强已有功能。Spring框架是AOP实现的一个典范,它提供了两种主要的动态...
总结来说,当我们无法使用Spring AOP时,可以借助JDK动态代理或者CGLIB来实现AOP功能。这要求我们对代理模式有深入理解,并能熟练运用反射API。通过这种方式,我们可以在任何框架或环境中实现类似Spring AOP的功能,...
Spring AOP在默认情况下,对于没有实现接口的类,会使用CGLIB库生成代理对象。CGLIB是一个强大的代码生成库,可以在运行时动态生成子类,从而实现对目标对象的代理。 1. **CGLIB工作原理** - CGLIB通过继承目标类...