提起dubbo,首先想到的是異步調用框架,同時提供了對springboot各種格式的支持,接下來是以spring boot的註解方式來簡單描述spring boot整合dubbo的方式
官方文檔:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
首先新建dubbo-test項目,其中有三個module,分別是dubbo-api,dubbo-provider以及dubbo-consumer;dubbo-api模塊負責定義api接口,dubbo-provider模塊負責對api接口進行邏輯實現以及服務註冊,dubbo-consumer模塊負責調用api中的接口,並通過相應註解來調用具體api的實現邏輯以及服務消費者的註冊功能。
其中pom.xml文件(父級)中的主要依賴如下:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.13.0</version>
</dependency>
dubbo-api模塊負責定義api接口:
dubbo-provider模塊需要引入dubbo-api模塊,並且配置文件application.properties需要作如下配置:
dubbo-provider模塊對api接口的實現:
package com.dubbo.provider.service.impl;
import com.dubbo.api.UserService;
import org.apache.dubbo.config.annotation.Service;
@Service(interfaceName = "userservice")
public class UserServiceImpl implements UserService {
@Override
public String getUserName(String username) {
return username;
}
}
注意的是這裏@Service註解使用的是dubbo中的包,同時dubbo-provider模塊的啓動類需要添加@EnableDubbo註解來掃描服務實現類
dubbo-consumer模塊也需要引入dubbo-api模塊,同時配置文件application.properties需要做如下配置:
然後dubbo-consumer調用dubbo-api接口的邏輯如下:
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Reference(interfaceName = "username")
private UserService userService;
@GetMapping("/{userName}")
public String getUserName(@PathVariable(name = "userName") String userName) {
String name = userService.getUserName(userName);
return name;
}
}
其中@Reference註解相當於@Authwire註解,只是這裏也是引入的dubbo中的包,同時dubbo-consumer模塊的啓動類也需要添加@EnableDubbo註解
測試:
至此,springboot整合dubbo,zookeeper爲註冊中心的樣例就成功了