# spring-bypass-proxy **Repository Path**: mistone/spring-bypass-proxy ## Basic Information - **Project Name**: spring-bypass-proxy - **Description**: 基于sping实现动态分流代理,可以根据参数实现调用不同接口实现类 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-08-03 - **Last Updated**: 2023-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用指南 ### 在启动类上加入@EnableCreateDiversionProxy ```java @SpringBootApplication @EnableCreateDiversionProxy public class StartApp { public static void main(String[] args) { SpringApplication.run(StartApp.class,args); } } ``` ### 接口类 --- 1. 在接口上添加 @CreateDiversionProxy 表示代理实现类的选择 2. 在接口方法添加 @Diverter(key="#key") 指定分流的方法和分流的key获取逻辑 ```java @CreateDiversionProxy(selector = DemoSelector.class) public interface TestService { @Diverter(key = "#key") public void hello(String key); } ``` > key 语法支持spel语法 --- ### 实现类即被代理类 实现1 ```java @DiversionService(version = "v1") public class TestServiceV1Impl implements TestService { @Override public void hello(String key) { System.out.println("hello v1"); } } ``` 实现2 ```java @DiversionService(version = "v2") public class TestServiceV2Impl implements TestService{ @Override public void hello(String key) { System.out.println("hello v2"); } } ``` > @DiversionService 会自动注入spring bean不需要@Component,@Service等注解 --- ### 自定义分流处理器 ```java public class DemoSelector implements DiversionSelector { @Override public Object nonDivert(Map proxyMap) { return proxyMap.get("v1"); } @Override public Object divert(String key, Map proxyMap) { return proxyMap.get(key); } } ``` ### 大功告成了 实现根据参数key来动态调用不同接口实现