在远程调用服务提供者的实现之前,如果需要做一些参数验证、缓存、判断、小功能等等,满足要求再调用服务提供者的远程服务,则我们可以通过编写一个本地存根来实现这种功能。

(1)、在公共项目中或服务消费者项目中编写一个远程接口的本地存根实现。

 package cn.coreqi.service.stub;

 import cn.coreqi.entities.User;
import cn.coreqi.service.UserService; import java.util.List; public class UserServiceStub implements UserService {
private final UserService userService; //存储远程接口的代理实现 //必须有一个有参构造器,传入的是远程接口的代理实现
public UserServiceStub(UserService userService) {
//构造函数传入的是UserService的远程代理对象
this.userService = userService;
} @Override
public void addUser(User user) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(user != null) {
userService.addUser(user);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public void delById(Integer id) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(id != 0 || id != null){
userService.delById(id);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public void modifyUser(User user) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(user != null){
userService.modifyUser(user);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public User getById(Integer id) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(id != 0 || id != null){
return userService.getById(id);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
return null;
}
return null;
} @Override
public List<User> getList() {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
return userService.getList();
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
return null;
}
}
}

(2)、在服务消费者配置文件中配置本地存根

     <!--3、声明需要调用的远程服务接口,生成远程服务代理,可以和本地Bean一样使用-->
<dubbo:reference id="userService" interface="cn.coreqi.service.UserService" stub="cn.coreqi.service.stub.UserServiceStub"/>

最新文章

  1. HDU5115 Dire Wolf(区间DP)
  2. rabbitmq之消息生命周期
  3. swap分区
  4. 14 个 grep 命令的例子 【转】
  5. C++进制转换(十进制转二进制、八进制、随意进制)
  6. 百度2015校招二面coding面试题
  7. iOS基础 - 多媒体
  8. sql server mdf碎片级数据库修复,数据库碎片级提取
  9. Django学习-23-ModelForm
  10. How to Apply Patches to a WLS 8.1 Environment
  11. css 背景(background)属性、背景图定位
  12. spring cloud 入门系列一:初识spring cloud
  13. redis过期回调以及键空间通知
  14. Java Queue 专题
  15. [洛谷P5216]DLS 采花
  16. IPC对象的持续性
  17. 遭遇java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener
  18. 设置UITextField键盘上return key不可点击
  19. kubeadm高可用master节点部署文档
  20. Gym 101190H Hard Refactoring (模拟坑题)

热门文章

  1. 11 Zabbix Item类型之Zabbix Calculated 计算型Item类型
  2. PKUWC 2019 记
  3. 树莓派上使用mdk3对无线热点进行DoS攻击
  4. [SDOI2016]储能表——数位DP
  5. 2018.10.2浪在ACM 集训队第二次测试赛
  6. poj 3678(SCC+2-SAT)
  7. 关于jQuery.ajax()的jsonp碰上post详解
  8. banner无缝滚动动画,支持左右按钮和小点
  9. SQL Server 操作XML数据
  10. mysql 8.0.12 创建新的数据库、用户并授权