Java服务_数据服务通过反射快速路由实现类并进行AOP增强
话不多说,直接开始实战!
1.创建数据服务service层的抽象类
在抽象方法中新建一个getAllMethods()方法,因为后续透出给使用方的接口名或者说服务名就是该service类中的一个个实现方法。
1 | public abstract class BrandService { |
2.创建一个spring环境工具类
在该工具类中新建两个spring框架天然提供的动态获取bean的两个方法,这也是spring依赖注入(ioc)的核心功能之一。
1 |
|
3.创建一个容器管理类
使用该容器管理类对service层的具体实现实例和方法进行收集管理,并对外提供统一的接口服务,只需要根据接口名就可以找到对应的接口实现方法。
其中return (R) methodMap.get(methodName).invoke(instanceMap.get(methodName), request)这一句就是真实调用实际接口方法,前后都是一些统一添加的监控和限流操作。从这也可以看出,这种架构非常有利于通过AOP增强的方式实现统一的监控和限流逻辑。
1 |
|
4.在外层再包一层AOP增强
对于一些统一的监控和限流,可以在外层再包一层调度器通过AOP增强来实现,同时也可以根据输入参数多建几个上层方法,实现不同目的的监控和限流。
1 |
|
5.最后就可以愉快地建service层实现类
随便举一个例子,这就建了24个接口,用户只需要传入methodName,就可以快速定位到具体实现接口。
1 |
|