栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring的动态代理开发步骤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring的动态代理开发步骤

Spring动态开发

名词解释
1). 目标类 原始类
指的是 业务类 (核心功能 --> 业务运算 DAO调用)
2). 目标方法,原始方法
目标类(原始类)中的方法 就是目标方法(原始方法)
3). 额外功能 (附加功能)
日志,事务,性能

1、 Spring动态代理的概念

概念:通过代理类为原始类(目标类)增加额外功能
好处:利于原始类(目标类)的维护

2. 搭建开发环境导入依赖

  org.springframework
  spring-aop
  5.1.14.RELEASE



  org.aspectj
  aspectjrt
  1.8.8



  org.aspectj
  aspectjweaver
  1.8.3

3. Spring动态代理的开发步骤

3.1 创建原始对象(目标对象)

public class UserServiceImpl implements UserService {
    @Override
    public void register(User user) {
        System.out.println("UserServiceImpl.register");
    }

    @Override
    public boolean login(String name, String password) {
        System.out.println("UserServiceImpl.login");
        return true;
    }
}

3.2 额外功能
MethodBeforeAdvice接口

额外的功能书写在接口的实现中,运行在原始方法执行之前运行额外功能。

public class Before implements MethodBeforeAdvice {
    
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("-----method before advice log------");
    }
}

3.3 定义切入点

切入点:额外功能加入的位置

目的:根据自己的需要,决定额外功能加入给那个原始方法
register
login

简单的测试:所有方法都做为切入点,都加入额外的功能。


   

3.4 组装 (2 3整合)

表达的含义:所有的方法 都加入 before的额外功能


3.5 调用

目的:获得Spring工厂创建的动态代理对象,并进行调用

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");

注意:
1. Spring的工厂通过原始对象的id值获得的是代理对象
2. 获得代理对象后,可以通过声明接口类型,进行对象的存储

UserService userService=(UserService)ctx.getBean("userService");

userService.login("")
userService.register()
4. 动态代理细节分析
  1. Spring创建的动态代理类在哪里?

     Spring框架在运行时,通过动态字节码技术,在JVM创建的,运行在JVM内部,等程序结束后,会和JVM一起消失
    
     什么叫动态字节码技术:通过第三个动态字节码框架,在JVM中创建对应类的字节码,进而创建对象,当虚拟机结束,动态字节码跟着消失。
    
     结论:动态代理不需要定义类文件,都是JVM运行过程中动态创建的,所以不会造成静态代理,类文件数量过多,影响项目管理的问题。
    

  1. 动态代理编程简化代理的开发

    在额外功能不改变的前提下,创建其他目标类(原始类)的代理对象时,只需要指定原始(目标)对象即可。

  2. 动态代理额外功能的维护性大大增强

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号