以前記錄了構建dubbo入門demo所需的環境以及基於普通maven項目構建dubbo的入門案例,今天記錄在這些的基礎上基於springboot來構建dubbo的入門demo;衆所周知,springboot極大的簡化了咱們的平常開發中的配置工做,因此使用springboot來構建dubbo也變的尤其簡單;需求與上篇文章的同樣,步驟總結爲如下幾點;java
1、在application.properties編寫dubbo的配置文件關鍵代碼以下:git
提供者:github
# 當前服務的名稱 dubbo.application.name=boot-user-service-provider # 註冊中心的地址 這裏註冊中心用的是zookeeper dubbo.registry.address=127.0.0.1:2181 dubbo.registry.protocol=zookeeper # 指定通訊規則(通訊協議:通訊端口) dubbo.protocol.name=dubbo dubbo.protocol.port=20883 # 監控中心協議,若是爲protocol="registry",表示從註冊中心發現監控中心地址,不然直連監控中心 dubbo.monitor.protocol=registry
消費者:web
server.port=8888 # 當前服務的名稱 dubbo.application.name=boot-order-service-consumer # 註冊中心的地址 這裏註冊中心用的是zookeeper dubbo.registry.address=127.0.0.1:2181 dubbo.registry.protocol=zookeeper # 監控中心協議,若是爲protocol="registry",表示從註冊中心發現監控中心地址,不然直連監控中心 dubbo.monitor.protocol=registry
2、在springboot項目的啓動類上添加@EnableDubbo註解表示開啓基於註解的dubbo模型,如無其餘特殊需求,提供者和消費同樣,代碼以下:spring
@SpringBootApplication @EnableDubbo // 開啓基於註解的dubbo模型 public class BootUserServiceProviderApplication { public static void main(String[] args) { SpringApplication.run(BootUserServiceProviderApplication.class, args); } }
3、對於提供者裏面的各個實現類咱們須要添加@Service標籤來暴露服務,對於消費者咱們須要在引用提供者的時候添加@Reference來引用遠程的提供者瀏覽器
與普通maven項目相比,基於springboot的dubbo項目配置文件的位置變化了也更傾向於註解而非xml來配置了,固然,對於習慣於xml配置的人來講,springboot也是能夠實現基於xml的配置的springboot
提供者須要暴露的服務:app
package com.darling.boot.service; import com.alibaba.dubbo.config.annotation.Service; import com.darling.pubIn.bean.User; import com.darling.pubIn.service.UserService; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; /** * @author 董琳琳 * @date 2018/10/8 11:20 * @description */ @Service // 暴露服務 @Component public class UserServiceImpl implements UserService { @Override public List<User> getUserAddressList(String userId) { ArrayList list = new ArrayList(); list.add(new User(3,"韋德3","男",36,"邁阿密")); list.add(new User(23,"詹姆斯23","男",34,"洛杉磯")); list.add(new User(24,"科比24","男",39,"洛杉磯")); return list; } @Override public void sayHello() { System.out.println("HELLO YSXLXSH"); } }
消費者調用服務:maven
package com.darling.boot.order.service; import com.alibaba.dubbo.config.annotation.Reference; import com.darling.pubIn.bean.User; import com.darling.pubIn.service.OrderService; import com.darling.pubIn.service.UserService; import org.springframework.stereotype.Service; import java.util.List; /** * @author 董琳琳 * @date 2018/10/8 11:42 * @description */ @Service public class OrderServiceimpl implements OrderService { @Reference // 引用遠程服務 UserService service; @Override public List<User> initOrder(String userId) { return service.getUserAddressList(userId); } }
至此基於springboot搭建dubbo入門demo的關鍵代碼已寫完,須要注意的是這裏個人測試不是像以前基於maven構建時的 單元測試,而是給消費者搭建成一個web項目經過從瀏覽器發送請求來測試是否調用成功,消費者的controller以下:ide
package com.darling.boot.order.controller; import com.darling.pubIn.bean.User; import com.darling.pubIn.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author 董琳琳 * @date 2018/10/8 11:44 * @description 訂單Controller */ @RestController public class OrderController { @Autowired OrderService service; @RequestMapping(value = "/getUserList/{userId}") public List<User> getUserList(@PathVariable String userId){ return service.initOrder(userId); } }
至此,基於springboot搭建dubbo的入門案例基本完成,關於dubbo案例的全部代碼所有上傳至GitHub,地址以下:
公共接口服務:https://github.com/darling2047/pub-interfence
基於springboot的提供者:https://github.com/darling2047/boot-user-service-provider
基於springboot的消費者:https://github.com/darling2047/boot-order-service-consumer
基於普通maven項目的提供者:https://github.com/darling2047/user-service-provider
基於普通maven項目的消費者:https://github.com/darling2047/order-service-consumer
之後有時間再記錄下dubbo的各項經常使用配置