springboot2.2.2集成dubbo的實(shí)現(xiàn)方法
最近在學(xué)習(xí)dubbo,想著作一些筆記,從來(lái)沒(méi)有在csdn上面寫(xiě)過(guò)博客,今天獻(xiàn)出第一次,哈哈,直接上代碼
一、創(chuàng)建父工程
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.dubbo</groupId>
<artifactId>demo01</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<description>Spring Boot2.x 整合 dubbo</description>
<modules>
<module>api</module>
<module>provider</module>
<module>consumer</module>
</modules>
<!--統(tǒng)一管理依賴版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<dubbo.version>2.7.5</dubbo.version>
<curator.version>4.2.0</curator.version>
<!-- 連接zookeeper的依賴,我的zookeeper版本是3.4.14,感覺(jué)這個(gè)jar版本和zookeeper是大概保持一致的,但是引入3.4.14會(huì)報(bào)錯(cuò),我試了下,從3.4.13開(kāi)始就不行了 -->
<zookeeper.version>3.4.12</zookeeper.version>
</properties>
<!--依賴定義-->
<!--dependencyManagement 定義依賴版本號(hào)。子工程直接加依賴即可,不需要再次加版本號(hào),便于統(tǒng)一維護(hù)版本號(hào)-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!-- zookeeper的api管理依賴 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<!-- zookeeper依賴 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 使用該依賴,idea需要安裝插件,沒(méi)有用過(guò)的自行百度一下吧 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
二、創(chuàng)建提供者與消費(fèi)者共用的api
該模塊沒(méi)有什么好說(shuō)的,提供者和消費(fèi)者都需要使用的接口api,提供者和消費(fèi)者都需要引入該模塊
<?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">
<parent>
<artifactId>demo01</artifactId>
<groupId>com.dubbo</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>api</artifactId>
</project>
// 注解都是lombok的,真的很方便
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class User implements Serializable {
private Integer id;
private String name;
private Integer age;
}
public interface UserService {
User getUserById(Integer id);
}
三、創(chuàng)建提供者
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dubbo</groupId>
<version>1.0.0</version>
<artifactId>demo01</artifactId>
</parent>
<groupId>com.dubbo</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<!-- 導(dǎo)入公共接口依賴 -->
<dependency>
<groupId>com.dubbo</groupId>
<artifactId>api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
dubbo: application: # 應(yīng)用名稱 name: user-provider protocol: # 協(xié)議名稱 name: dubbo # 協(xié)議端口 port: 20880 registry: # 注冊(cè)中心地址 address: zookeeper://192.168.104.231:2181
@SpringBootApplication
// 提供服務(wù)的應(yīng)用必須配置此項(xiàng)
@DubboComponentScan("com.dubbo.provider.service")
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
@Component
// 該service是org.apache.dubbo.config.annotation.Service
@Service
public class UserServiceImpl implements UserService {
@Override
public User getUserById(Integer id) {
User user = User.builder()
.id(id)
.name("張三")
.age(20 + id)
.build();
return user;
}
}
四、創(chuàng)建消費(fèi)者
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dubbo</groupId>
<version>1.0.0</version>
<artifactId>demo01</artifactId>
</parent>
<groupId>com.dubbo</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>consumer</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<!-- 導(dǎo)入公共接口依賴 -->
<dependency>
<groupId>com.dubbo</groupId>
<artifactId>api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
# 端口 server: port: 8081 dubbo: application: name: user-consumer protocol: name: dubbo port: 20880 registry: address: zookeeper://192.168.104.231:2181
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
@RestController
@RequestMapping("/user")
public class ConsumerController {
@Reference
private UserService userService;
@GetMapping("/{id}")
public User getUserById(@PathVariable int id) {
return userService.getUserById(id);
}
}
五、啟動(dòng)并訪問(wèn)
先啟動(dòng)provider,啟動(dòng)結(jié)果如下

啟動(dòng)consumer,啟動(dòng)結(jié)果如下

瀏覽器訪問(wèn):http://localhost:8081/user/4

好了,到此就完成了最基本的springboot與dubbo的整合,更多的dubbo的api請(qǐng)查閱 dubbo官方文檔
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里
這篇文章主要介紹了使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決
本文主要介紹了Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Java使用PDFBox實(shí)現(xiàn)操作PDF文檔
這篇文章主要為大家詳細(xì)介紹了Java如何使用PDFBox實(shí)現(xiàn)操作PDF文檔,例如添加本地圖片、添加網(wǎng)絡(luò)圖片、圖片寬高自適應(yīng)、圖片水平垂直居中對(duì)齊等功能,需要的可以了解下2024-03-03
通過(guò)java字節(jié)碼分析學(xué)習(xí)對(duì)象初始化順序
今天用了jmock對(duì)進(jìn)行單元測(cè)試編碼,發(fā)現(xiàn)一個(gè)比較奇怪的語(yǔ)法,static使用方法,見(jiàn)下面例子2013-11-11

