续上一张 @~~@
这个是通过cglib来创建动态代理的 不需要实现PersonService接口
package javaeye;
import java.lang.reflect.Method;
import javaeye.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;
//原先是我们Proxy的instance来创建的,在这里我们用Enhancer来创建代理对象
Enhancer enhancer = new Enhancer();
//设置一个父类--》就是目标类,enhancer继承了目标类(this.targerObject)的所有的方法(非final)进行覆盖
enhancer.setSuperclass(this.targetObject.getClass());
//回调 跟jdk的回调一样的
enhancer.setCallback(this);
//
return enhancer.create();
}
//下面的跟上一章的invoke()一样
public Object intercept(Object proxy, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
PersonServiceBean bean = (PersonServiceBean) this.targetObject;
Object result = null;
if(bean.getUser()!=null){
result = methodProxy.invoke(targetObject, args);
}
return result;
}
}
测试类:
@Test public void proxyTest2(){
CGlibProxyFactory factory = new CGlibProxyFactory();
PersonServiceBean service = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("javaeye"));
service.save("javaeye");
}
到此为止已经实现了简单的AOP了
分享到:
相关推荐
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个开源的、免费的 Java 框架,它的目标是减少企业级开发的复杂性。它集成了许多现有的技术,...
在本篇Spring学习笔记中,我们将探讨如何使用CGLIB库来实现AOP功能。 CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它被广泛用于动态代理和运行时织入AOP切面。在Spring中,如果目标类没有...
Spring学习笔记,主要包括核心技术IOC和AOP
这个文档集合包括了Spring的API参考、用户指南、开发者笔记等,是学习和使用Spring 2.5 RC2的宝贵资源。 首先,让我们了解一下Spring的核心特性。2.5版本引入了一些重要的增强,如依赖注入(Dependency Injection,...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
- **JDK动态代理**:当目标对象实现了接口时,Spring可以创建一个代理对象,该代理对象在调用目标方法前后执行额外的逻辑。这种方式是接口驱动的,适用于有接口的情况。 - **CGLIB代理**:如果目标对象没有实现...
在本篇Spring学习笔记中,我们将深入探讨动态代理模式,并结合Spring框架的实现进行分析演示。动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
2. **Spring AOP(Aspect Oriented Programming,面向切面编程)**: AOP允许开发者定义"横切关注点",这些关注点与业务逻辑分离,可以处理如日志记录、事务管理、安全检查等通用任务。在Spring中,切面通过`@...
以上是 Spring 2.5.6 学习笔记中的关键知识点,通过这些基础知识的学习,开发者可以开始构建基于 Spring 框架的应用程序。接下来,可以进一步深入学习 Spring 的高级特性,如事务管理、安全性、Web 开发等方面的知识...
这个压缩包包含了一系列刘冬.NET在博客园上发布的Spring.NET学习笔记,帮助读者深入理解这个强大的框架。 1. **控制反转(IoC)**: 控制反转是Spring.NET的核心概念之一,它将对象的创建和管理权交给了框架,而...
在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
### Spring.NET学习笔记-实现一个简易的IoC框架 #### 一、背景介绍与理论基础 在.NET领域中,Spring.NET框架是一个非常重要的轻量级框架,它支持依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
本笔记主要关注Spring Boot中的两个核心概念:事务管理和面向切面编程(AOP)。我们将深入探讨这两个主题,理解它们的工作原理以及如何在实际项目中应用。 ### 事务管理 事务是数据库操作的基本单元,确保数据的...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
Spring Aop 学习笔记