zoukankan      html  css  js  c++  java
  • Dubbo本地存根

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

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

     1 package cn.coreqi.service.stub;
     2 
     3 import cn.coreqi.entities.User;
     4 import cn.coreqi.service.UserService;
     5 
     6 import java.util.List;
     7 
     8 public class UserServiceStub implements UserService {
     9     private final UserService userService;  //存储远程接口的代理实现
    10 
    11     //必须有一个有参构造器,传入的是远程接口的代理实现
    12     public UserServiceStub(UserService userService) {
    13         //构造函数传入的是UserService的远程代理对象
    14         this.userService = userService;
    15     }
    16 
    17     @Override
    18     public void addUser(User user) {
    19         try {
    20             //在此处进行缓存、参数验证等等
    21             //如果通过验证则调用远程代理实现的方法
    22             if(user != null) {
    23                 userService.addUser(user);
    24             }
    25         }
    26         catch (Exception e){
    27             //可以在此处进行容错等任何AOP拦截事项
    28         }
    29     }
    30 
    31     @Override
    32     public void delById(Integer id) {
    33         try {
    34             //在此处进行缓存、参数验证等等
    35             //如果通过验证则调用远程代理实现的方法
    36             if(id != 0 || id != null){
    37                 userService.delById(id);
    38             }
    39         }
    40         catch (Exception e){
    41             //可以在此处进行容错等任何AOP拦截事项
    42         }
    43     }
    44 
    45     @Override
    46     public void modifyUser(User user) {
    47         try {
    48             //在此处进行缓存、参数验证等等
    49             //如果通过验证则调用远程代理实现的方法
    50             if(user != null){
    51                 userService.modifyUser(user);
    52             }
    53         }
    54         catch (Exception e){
    55             //可以在此处进行容错等任何AOP拦截事项
    56         }
    57     }
    58 
    59     @Override
    60     public User getById(Integer id) {
    61         try {
    62             //在此处进行缓存、参数验证等等
    63             //如果通过验证则调用远程代理实现的方法
    64             if(id != 0 || id != null){
    65                 return userService.getById(id);
    66             }
    67         }
    68         catch (Exception e){
    69             //可以在此处进行容错等任何AOP拦截事项
    70             return null;
    71         }
    72         return null;
    73     }
    74 
    75     @Override
    76     public List<User> getList() {
    77         try {
    78             //在此处进行缓存、参数验证等等
    79             //如果通过验证则调用远程代理实现的方法
    80             return userService.getList();
    81         }
    82         catch (Exception e){
    83             //可以在此处进行容错等任何AOP拦截事项
    84             return null;
    85         }
    86     }
    87 }

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

    1     <!--3、声明需要调用的远程服务接口,生成远程服务代理,可以和本地Bean一样使用-->
    2     <dubbo:reference id="userService" interface="cn.coreqi.service.UserService" stub="cn.coreqi.service.stub.UserServiceStub"/>
  • 相关阅读:
    对cross-env的理解
    【好好学习】mh_h5
    QS工具入门
    vue中用qs传参发送axios请求
    Web API 异常处理
    WEB API Filter的使用以及执行顺序
    RSA/SHA1加密和数字签名算法在开放平台中的应用
    windows上RSA密钥生成和使用
    Cordova Error: cmd: Command failed with exit code ENOENT
    Cordova热更新cordova-hot-code-push
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10359982.html
Copyright © 2011-2022 走看看