Spring学习Java配置Spring与代理模式
Posted yfyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring学习Java配置Spring与代理模式相关的知识,希望对你有一定的参考价值。
九、使用Java的方式配置Spring
JavaConfig是Spring的一个子项目,在Spring4之后,成为了核心功能
@Configuration
public class MyConfig {
@Bean
public User getUser() {
return new User();
}
}
纯Java配置,在SpringBoot中随处可见
十、代理模式
代理模式是SpringAOP的底层!
代理模式的分类
静态分类
动态代理
10.1 静态代理
角色分析:
- 抽象角色:一般会使用接口或者抽象类来解决
- 真实角色:被代理的角色
- 代理角色:代理真实角色,代理后一般会做一些附属操作
- 客户:访问代理对象的人
代码步骤:
接口
//租房 public interface Rent { public void rent(); }
真实角色
//房东 public class Host implements Rent{ public void rent() { System.out.println("房东要出租房子"); } }
代理角色
public class Proxy implements Rent{ private Host host; public Proxy() { } public Proxy(Host host) { this.host = host; } public void rent() { seeHouse(); host.rent(); hetong(); fare(); } //看房 public void seeHouse() { System.out.println("中介带你去看房"); } //收中介费 public void fare() { System.out.println("收中计费"); } //签合同 public void hetong() { System.out.println("签合同"); } }
客户端访问代理角色
public class Client { public static void main(String[] args) { //房东要租房子 Host host = new Host(); //代理,中介帮房租房子,代理角色一般有一些附属操作 Proxy proxy = new Proxy(host); //不用面对房东,直接找中介租房即可 proxy.rent(); } }
代理模式的好处:
- 可以使真实角色更加纯粹!不用关心一些公共业务
- 公告业务交给代理角色!实现了业务分工
- 公告业务扩展时,方便集中管理
缺点:
- 一个真实角色就会产生一个代理角色
- 代码里翻倍,开发效率低
10.2 动态代理
- 动态代理和静态代理角色一样
- 动态代理的类是动态生成的,不是直接写好的
- 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
- 基于接口--JDK动态代理【使用】
- 基于类:cglib
- Java字节码:javasist
需要了解两个类:Proxy:代理,InvocationHandler:调用处理程序
以上是关于Spring学习Java配置Spring与代理模式的主要内容,如果未能解决你的问题,请参考以下文章