spring的动态代理与静态代理 (spring默认动态还是静态)

1.代理模式的好处:

通过代理类,为原始类增加额外功能,有利于原始类的维护。

2.名词概念

(1)目标类或者原始类

指的是业务类,核心功能

(2)目标方法 原始方法

指的是目标类或者原始类中的方法

(3)额外功能(附加功能)

比如日志,事务等

3.代理开发的核心要素

代理类 = 目标类(原始类) + 额外功能 + 和目标类实现同样的接口

以上是关于代理模式的一些名词概念,下面是简单的静态代理的代码:

1.新建一个接口类,并定义两个接口方法

public interface UserService1 {

    public void login(String name,String password);

    public void logout();

}

2.新建一个实现类,并实现1中的接口

public class UserServiceImpl implements UserService1 {
    public void login(String name, String password) {
        System.out.println("login.method");
    }

    public void logout() {
        System.out.println("logout.method");
    }
}

3.新建一个代理类,同样实现1中的接口

public class UserServiceProxy implements UserService1 {
    private UserServiceImpl userService = new UserServiceImpl();
    public void login(String name, String password) {
        System.out.println("代理类的附加功能");
        userService.login(name,password);
    }

    public void logout() {
        System.out.println("代理类附加功能=====");
        userService.logout();
    }
}

代理类中,要调用目标类(即UserServiceImpl),因为目标类会提供具体的业务方法,新加代理类只是为了添加额外功能,把目标类和额外功能整合一起。代理类也要实现接口,并实现接口的方法,在实现方法中首先编写额外功能逻辑,然后再调用目标类的业务方法。

以上只是静态代理的一个小demo,供参考理解

更多内容请关注个人微信公众号:扶瑶直上九重天