一、用代理模式可以实现aop
1、目标对象和代理对象共同实现同一个接口,当用户调用接口时,返回代理类,代理类里先进行交叉业务逻辑,再进行目标对象的业务逻辑。
2、使用JDK中的Proxy类,我们可以只需什么一个切面类,一个目标类,和一个接口,就可以动态得到一个代理类。
public class CustomerServiceImpl implements ICustomerServiceProxy {
public void register() {
System.out.println("注册!");
}
}
目标对象,继承了接口ICustomerServiceProxy
/**
* 切面
*
* @author dsm
*
*/
public class LogInvocationHandler implements InvocationHandler {
private Object target;
public LogInvocationHandler(Object target) {
this.target = target;
}
/**
* Proxy通过该方法,将交叉业务逻辑代码插入到目标对象的对应方法上<br>
* 织入
*
* @param obj 目标对象
* @param method 目标对象的方法
* @param args 方法的参数
*/
public Object invoke(Object obj, Method method, Object[] args)
throws Throwable {
//交叉业务逻辑
System.out.println("execute time " + new Date());
//调用目标对象的方法
Object rstObj = method.invoke(target, args);
return rstObj;
}
}
切面
public static void main(String[] args) {
ICustomerServiceProxy target = new CustomerServiceImpl();
target.register();
ICustomerServiceProxy proxy = (ICustomerServiceProxy) Proxy.newProxyInstance(
target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
new LogInvocationHandler(target));
System.out.println(proxy.getClass().getName());
proxy.register();
}
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0008/6423/5f8e4a75-5de6-3570-8702-c516c8e37911-thumb.gif)
- 大小: 4.1 KB
分享到:
相关推荐
- Spring AOP的实现涉及到反射、动态代理、代理模式等多个核心Java技术。 - `org.springframework.aop.framework.ProxyFactoryBean` 和 `org.springframework.aop.framework.JdkDynamicAopProxy` 是动态代理的关键...
Spring AOP 源码分析笔记 Spring AOP(Aspect-Oriented Programming)是一种编程范式,它允许开发者 modularize cross-cutting concerns,即将横切关注点模块化。AOP 使得开发者可以将一些公共的功能模块化,以便在...
Spring AOP基于代理实现,可以使用接口代理(JDK动态代理)或类代理(CGLIB)。 7. CGLIB: CGLIB是Spring AOP默认的代理库,用于生成目标类的子类,从而实现方法拦截。当目标类没有实现接口时,Spring会使用CGLIB...
### 李君老师JavaEE笔记-SpringAop详解 #### 概述 李君老师的JavaEE笔记中的SpringAop部分,深入浅出地讲解了面向切面编程(Aspect Oriented Programming,简称AOP)的核心概念及其在Spring框架中的应用。AOP是一种...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...
NULL 博文链接:https://linres.iteye.com/blog/281221
SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...
4. **代理(Proxy)**:在Spring AOP中,为了实现切面,需要创建目标对象的代理。代理对象负责在调用目标方法前后执行通知。Spring提供了两种代理方式: - **静态代理**:在编译时创建,通常通过实现相同接口的方式...
【Spring AOP源码笔记】 Spring AOP是Spring框架的核心组件之一,它实现了面向切面编程(Aspect-Oriented Programming,简称AOP),允许开发者定义“切面”,这些切面可以封装横切关注点,如日志记录、事务管理等。...
Spring Aop 学习笔记
【Spring 依赖注入(IOC)与面向切面编程(AOP)】 1. IOC(依赖注入):Spring 使用 IOC 容器管理对象的生命周期和对象间的依赖关系。通过在配置文件中声明对象及其依赖,Spring 在运行时自动装配这些对象,减少了...
在`spring--day02笔记.doc`中,深入剖析了AOP的实现机制,包括通知类型、切入点表达式和代理模式,为读者构建起完整的AOP知识体系。 接下来,Spring MVC是Spring框架中用于构建Web应用程序的模块,它提供了模型-...
在本篇Spring学习笔记中,我们将深入探讨动态代理模式,并结合Spring框架的实现进行分析演示。动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。...
总结,Spring学习笔记(七)的重点是讲解了Spring中的代理模式,包括静态代理和动态代理的概念,以及如何在AOP中应用这些代理来增强功能。通过理解这些知识,你可以更好地掌握Spring框架,提升在实际开发中的能力。
"Spring笔记示例源代码"这个资源很可能是为了帮助学习者深入理解Spring框架的各种功能和用法而提供的实际代码示例。 1. **Spring IoC**:IoC是Spring的核心特性,它将对象的创建和管理权交给Spring容器,使得开发者...
Spring笔记可能涵盖了以下内容: 1. **IoC(Inversion of Control)容器**:Spring的核心特性之一,通过反转控制权,让框架负责管理对象的生命周期和装配,开发者只需定义配置,无需手动创建对象。 2. **依赖注入...
这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...
SSH笔记主要围绕的是Spring框架中的AOP(面向切面编程)特性进行讲解,结合了动态代理和基于注解的配置方式。AOP是Spring框架的一个重要组成部分,它提供了一种模块化和解耦代码的方式,使得我们可以将关注点分离到...
Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种将业务逻辑与系统服务(如日志、事务管理等)分离的方法,使得我们可以更好地关注核心业务,而无需在每个...