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"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM