内容简介:基于
Hessian
是一个 binary-rpc
协议轻量级RPC调用框架,相对于我们常见的 Dubbo
, Spring Cloud
使用起来方便简洁。
基于 Spring IOC
实现 Hessian
注解形式服务发布与服务消费。从实现过程深入了解Spring 依赖注入的原理。
Hessian 使用
HessianServiceProxyExporter
public class HessianServiceProxyExporter extends HessianServiceExporter { @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //此处可做统一数据验签 log.info("HessianServiceProxyExporter get request at {}" , LocalDateTime.now()); super.handleRequest(request ,response); } } 复制代码
hessian 服务暴露
@Bean(name = "/userService") public HessianServiceExporter initHessian(){ HessianServiceExporter exporter = new HessianServiceProxyExporter(); exporter.setService(new UserServiceImpl()); exporter.setServiceInterface(IUserService.class); return exporter; } 复制代码
hessian 服务消费
@Bean public HessianReferenceProxyFactoryBean helloClient() { HessianReferenceProxyFactoryBean factory = new HessianReferenceProxyFactoryBean(); factory.setServiceUrl("http://127.0.0.1:8080/userService"); factory.setServiceInterface(IUserService.class); return factory; } 复制代码
将hessian 服务初始化到Spring IOC容器中后与普通Service使用一样。
@Autowired private IUserService userService; 复制代码
我们从上述的使用Hessian的服务开发过程中会发现每一个Hessian服务的开发都会有一一对应的服务暴露,服务引用。当系统比较庞大的时候就会增加服务管理的难度与大量的重复代码
Hessian 注解实现
随着Spring Boot普及,越来越多人习惯于注解开发模式。Hessian 也可以实现注解模式的开发与使用。
@HessianService
我们先来分析下Hessian服务暴露的过程:
@HessianService
Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Component public @interface HessianService { /** * hessian服务名称 * @return */ String name() default ""; } 复制代码
Service Bean的实例交由Spring IOC来处理
通过实现 InitializingBean
, ApplicationContextAware
相应的接口处理 @HessianService
服务暴露
@HessianReference
consumer 消费服务,借鉴 @Autowired
实现思路:继承 InstantiationAwareBeanPostProcessorAdapter
重载 postProcessPropertyValues
方法
InstantiationAwareBeanPostProcessorAdapter postProcessPropertyValues
以上便实现了Hessian的注解模式
@HessianService public class StudentServiceImpl implements IStudentService{ } 复制代码
@HessianReference private IUserService userService; 复制代码
小结
上述实现过程中,我们可明显看出:基于 Spring framework
的开发中 一切的Bean操作都围绕 IOC
容器进行;并体现了 Spring framework
一个很重要的核心思想 面向扩展开放
, Spring framework
提供了多种可供扩展的接口,通过实现接口中的方法可实现个性化业务(如上述中的 @ HessianReference
依赖注入)
此篇文章的重点不是实现 Hessian
注解模式,而是通过 Hessian
注解模式的实现过程学习 Spring
良好的设计分层(面向扩展开放):通过分层的设计使得我们的代码具高可扩展性
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Spring 注解注入—@Qualifier 注释
- SpringBoot基础篇Bean之条件注入之注解使用
- spring下应用@Resource, @Autowired 和 @Inject注解进行依赖注入的差异
- Spring 注解编程之模式注解
- Java注解之编译时注解
- Java注解之运行时注解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
实战Linux编程精髓
罗宾斯 / 中国电力出版社 / 2005-7 / 59.80元
编写应用软件,特别是那些比较重要的软件,毫无疑问要涉及到系统调用。在UNIX/Linux环境下编程更是如此。要想编写优秀的软件,就必须熟悉这些系统调用的方方面面。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。全书主要分为三大部分:第一部分讨论了基本的编程问题,包括Linux编程环境、基本的文件和进程管理与操作、内存操作,还介绍了一些基本的库接口。第二部分比较深入地讨论了......一起来看看 《实战Linux编程精髓》 这本书的介绍吧!