温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行springboot2.2.2集成dubbo的实现

发布时间:2021-10-15 17:09:55 来源:亿速云 阅读:144 作者:柒染 栏目:编程语言

本篇文章为大家展示了如何进行springboot2.2.2集成dubbo的实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

最近在学习dubbo,想着作一些笔记,从来没有在csdn上面写过博客,今天献出第一次,哈哈,直接上代码

一、创建父工程

<?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>  <!--统一管理依赖版本-->  <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,感觉这个jar版本和zookeeper是大概保持一致的,但是引入3.4.14会报错,我试了下,从3.4.13开始就不行了 -->    <zookeeper.version>3.4.12</zookeeper.version>  </properties>  <!--依赖定义-->  <!--dependencyManagement 定义依赖版本号。子工程直接加依赖即可,不需要再次加版本号,便于统一维护版本号-->  <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需要安装插件,没有用过的自行百度一下吧 -->    <dependency>      <groupId>org.projectlombok</groupId>      <artifactId>lombok</artifactId>      <optional>true</optional>    </dependency>  </dependencies></project>

二、创建提供者与消费者共用的api

该模块没有什么好说的,提供者和消费者都需要使用的接口api,提供者和消费者都需要引入该模块

<?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);}

三、创建提供者

<?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>    <!-- 导入公共接口依赖 -->    <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:  # 应用名称  name: user-provider protocol:  # 协议名称  name: dubbo  # 协议端口  port: 20880 registry:  # 注册中心地址  address: zookeeper://192.168.104.231:2181

@SpringBootApplication// 提供服务的应用必须配置此项@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@Servicepublic class UserServiceImpl implements UserService {  @Override  public User getUserById(Integer id) {    User user = User.builder()        .id(id)        .name("张三")        .age(20 + id)        .build();    return user;  }}

四、创建消费者

<?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>    <!-- 导入公共接口依赖 -->    <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: 8081dubbo: application:  name: user-consumer protocol:  name: dubbo  port: 20880 registry:  address: zookeeper://192.168.104.231:2181

@SpringBootApplicationpublic 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);  }}

五、启动并访问

启动provider

启动consumer

浏览器访问:http://localhost:8081/user/4

上述内容就是如何进行springboot2.2.2集成dubbo的实现,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI