Spring5----复习笔记4

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Spring5----复习笔记4脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

今天继续更新我们的sPRing5复习笔记。

今天介绍AOP概念。

首先来介绍一下什么是AOP:

Spring5----复习笔记4

这里我举了个例子,比如我们在普通的用户登录板块,如果我们想要添加一些特殊的功能时,比如判断这个用户是管理员还是普通会员,如果我们一开始没有加这个功能,那我们想加入功能时就要修改我们的逻辑判断代码,这就破坏了设计模式中的封闭开放原则,是一种不好的修改方法。

但是如果我们引入了AOP,就可以解决这个问题了,我们可以在原有方法的基础上增加功能,不修改原有的代码也能实现功能的添加。

其实AOP底层采用了代理模式,接下来我将展示jdk的动态代理。

Spring5----复习笔记4

 我们可以发现当我们实现jdk的动态代理时,需要写一个接口,并用实现类实现这个接口。

接口:

public interface UserDAO {
    public int add(int a,int b);

    public String update(String id);
}

实现类:

public class UserDaoImpl implements UserDao{
    @override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public String update(String id) {
        return id;
    }
}

代理对象代码:

//创建代理对象代码
class UserDaoProxy implements InvocationHandler{

    //1.把创建的是谁的代理对象,把谁传递来
    //有参构造进行传递
    Object obj;

    public UserDaoProxy(Object obj){
        this.obj = obj;
    }


    //增强的逻辑
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //方法之前
        @R_304_2663@tem.out.println("在方法之前执行:" + method.getName() + "  传递的参数..." + Arrays.toString(args));

        //被增强的方法需要执行
        Object res = method.invoke(obj, args);
        System.out.println("原方法的返回值 : " + res);

        //方法之后
        System.out.println("方法执行之后 : " + obj);

        return res;
    }
}

客户端调用:

public static void main(String[] args) {
        //创建接口实现类的代理方法
        Class[] interfaces = {UserDao.class};
        UserDao dao = (UserDao) Proxy.newProxyInstance(JDKProxy.class.getClassLoader(), interfaces, new UserDaoProxy(new UserDaoImpl()));

        int res = dao.add(1, 2);
        System.out.println(res);
        System.out.println("*********************8*****************");
        String update = dao.update("123");

        System.out.println(update);
    }

我们在创建代理类对象的时候需要

脚本宝典总结

以上是脚本宝典为你收集整理的Spring5----复习笔记4全部内容,希望文章能够帮你解决Spring5----复习笔记4所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。