Java动态代理(Spring Aop原理)

简介:
Java代码   收藏代码
  1. import java.lang.reflect.InvocationHandler ;  
  2. import java.lang.reflect.Proxy ;  
  3. import java.lang.reflect.Method ;  
  4. interface Subject{  
  5.     public String say(String name,int age) ;    // 定义抽象方法say  
  6. }  
  7. class RealSubject implements Subject{   // 实现接口  
  8.     public String say(String name,int age){  
  9.         return "姓名:" + name + ",年龄:" + age ;  
  10.     }  
  11. };  
  12. class MyInvocationHandler implements InvocationHandler{  
  13.     private Object obj ;  
  14.     public Object bind(Object obj){  
  15.         this.obj = obj ;    // 真实主题类  
  16.         return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this) ;  
  17.     }  
  18.     public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{  
  19.         Object temp = method.invoke(this.obj,args) ;    // 调用方法  
  20.         return temp ;  
  21.     }  
  22. };  
  23. public class DynaProxyDemo{  
  24.     public static void main(String args[]){  
  25.         Subject sub = (Subject)new MyInvocationHandler().bind(new RealSubject()) ;  
  26.         String info = sub.say("李兴华",30) ;  
  27.         System.out.println(info) ;  
  28.     }  
  29. };  

 

相关文章
|
4天前
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
18小时前
|
JSON 前端开发 Java
【JAVA进阶篇教学】第七篇:Spring中常用注解
【JAVA进阶篇教学】第七篇:Spring中常用注解
|
2天前
|
前端开发 安全 Java
使用Spring框架加速Java开发
使用Spring框架加速Java开发
5 0
|
2天前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
8 0
|
4天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
45 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
4天前
|
XML Java 数据格式
Spring使用AOP 的其他方式
Spring使用AOP 的其他方式
14 2
|
4天前
|
XML Java 数据格式
Spring 项目如何使用AOP
Spring 项目如何使用AOP
18 2
|
8天前
|
XML 监控 安全
18:面向切面编程-Java Spring
18:面向切面编程-Java Spring
26 5
|
8天前
|
缓存 NoSQL Java
17:缓存机制-Java Spring
17:缓存机制-Java Spring
22 5
|
3月前
|
Java 数据库连接 应用服务中间件
Spring5源码(39)-Aop事物管理简介及编程式事物实现
Spring5源码(39)-Aop事物管理简介及编程式事物实现
26 0