SpringBoot+dubbo 註解方式實現入門
阿新 • • 發佈:2018-12-31
1、前期準備工作,在 zk官網 下載需要的zk壓縮檔案,我下載的是3.4.9版本,在windows系統上安裝,將檔案解壓到指定檔案下面,在confg目錄下面有一個zoo_sample.cfg檔案,我們拷貝一份,修改檔名稱為zoo.cfg
修改zoo.cfg檔案當中配置資訊,
在bin目錄下,直接使用zkServer.cmd啟動,預設使用埠是2181
接下來搭建一個maven專案作為provider,provider當中的pom.xml檔案如下,注意這裡引入的不是dubbo的jar包,而是spring-dubbo的jar包。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test.dubboTest</groupId> <artifactId>dubboTest</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.7.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.0</version> </dependency> </dependencies> </project>
provider當中的配置檔案如下
#設定當前服務在zk當中的應用名稱,全域性唯一 spring.dubbo.application.name=provider # 設定zk的服務埠 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 #設定採用的服務協議 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 # 設定當前專案當中使用dubbo註解的包路徑 spring.dubbo.scan=com.spring.springboot server.port=8080
下面是服務的目錄結構
先來看需要的domain物件,需要實現序列化介面
public class City implements Serializable { private static final long serialVersionUID = 1433444989019131117L; private String name; private String content; public City(String name, String content) { this.name = name; this.content = content; } //省略getter,setter方法 }
介面類
public interface CityDubboService {
City findCityByName(String name);
}
介面實現類,這裡使用的@Service註解是dubbo當中的Service,並不是spring當中的Service註解
@Service(version = "1.0.0")
public class CityDubboServiceImpl implements CityDubboService {
@Override
public City findCityByName(String name) {
return new City("浙江","杭州");
}
}
關於啟動類
@SpringBootApplication
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
以上是provider方需要提供的一些結構程式碼,接下來看consumer方需要的一些介面資訊
注意:city, pom.xml,CityDubboService與上面的都一致,不再重複貼上,下面主要是看配置檔案
application.properties配置檔案
server.port=8081
## Dubbo 服務消費者配置,全域性唯一
spring.dubbo.application.name=consumer
# zk註冊中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#當前專案當中,需要使用dubbo注入的包路徑
spring.dubbo.scan=com.spring.springboot
呼叫具體api介面的實現類
@Component
public class CityDubboConsumerService {
@Reference(version ="1.0.0")
CityDubboService cityDubboService;
public void printCity() {
String cityName="溫嶺";
City city = cityDubboService.findCityByName(cityName);
System.out.println(city.toString());
}
}
啟動類,加測試類
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);
CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);
cityService.printCity();
}
}
呼叫顯示
上述程式碼均在本地測試成功,在開發環境當中,是需要將api介面,以及domain物件,統一放在一個專案當中管理,在provider和consumer當中使用jar包進行引入。