最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot整合dubbo搭建微服務的實現(xiàn)示例

 更新時間:2025年08月06日 10:02:13   作者:lianaozhe  
本文主要介紹了Springboot整合dubbo搭建微服務的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

開發(fā)前提

由于dubbo的注冊中心用的是zookeeper,所以首先需要安裝zookeeper。

構建Springboot項目

第一步:選擇新建project或者module,在界面中選擇maven點擊next:

第二步:填上項目的基本信息點擊Finish:

第三步:右擊項目new -> Module:

第四步:在界面中選擇maven點擊next:

第五步:填上項目的基本信息點擊Finish:

第六步:重復第三,四,五步,分別創(chuàng)建項目需要的dubbo-api,dubbo-provider,dubbo-customer幾個模塊,如下:

第七步:導入父工程依賴:

<?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.demo</groupId>
    <artifactId>dubbo-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>dubbo-provider</module>
        <module>dubbo-customer</module>
        <module>dubbo-api</module>
    </modules>

    <properties>
        <java.version>1.8</java.version>
        <source.level>1.8</source.level>
        <target.level>1.8</target.level>
        <lombok.version>1.18.16</lombok.version>
        <skip_maven_deploy>true</skip_maven_deploy>
        <spring-boot-dependencies.version>2.4.1</spring-boot-dependencies.version>
        <spring-cloud-dependencies.version>Dalston.SR4</spring-cloud-dependencies.version>
        <junit.version>4.12</junit.version>
        <dubbo.version>3.0.2.1</dubbo.version>
        <spring-dubbo.version>2.0.0</spring-dubbo.version>
        <lombok.version>1.18.16</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- 統(tǒng)一jar版本管理,避免使用 spring-boot-parent -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-bom</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--dubbo 和  springboot 整合的包-->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

開發(fā)api模塊

user實體類:

package com.demo.api.entity;


import lombok.Data;

import java.io.Serializable;

/**
 * @Author: laz
 * @CreateTime: 2022-10-26  10:56
 * @Version: 1.0
 */
@Data
public class User implements Serializable {
    

    private Long id;

    private String username;

    private String password;

}

創(chuàng)建本次測試的接口:

package com.demo.api.service;

import com.demo.api.entity.User;

public interface IUserService {

    User selectUserById(Long id);
}

開發(fā)生產者模塊

第一步:導入依賴

<?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>dubbo-demo</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dubbo-provider</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>dubbo-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--dubbo 與 spring-boot 整合包-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <!--springboot 啟動核心包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--springboot rest -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-zookeeper</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>

        <!--mysql  的驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>


    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>



</project>

第二步:添加配置

server:
  port: 8081

spring:
  application:
    name: dubbo-samples-privider-springCloud
    #配置數(shù)據(jù)源信息
  datasource:
    #配置連接數(shù)據(jù)庫的各個信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    #設置字符集
    url: jdbc:mysql://8.142.127.37:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456


mybatis-plus:
  #配置類型別名所對應的包
  type-aliases-package: com.demo.provider.entity
  #配置SQL輸出語句com.winsun.dataclean.mapper
  mapper-locations: com/demo/provider/mapper/*.xml


dubbo:
  application:
    name: ${spring.application.name}
  registry:
    address: zookeeper://43.139.86.193:2181
    timeout: 2000
  protocol:
    name: dubbo
    port: 20890
  # 掃描 @DubboService 注解
  scan:
    base-packages: com.demo.provider.service.impl

第三步:編寫啟動類

package com.demo.provider;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author: laz
 * @CreateTime: 2022-10-26  11:05
 * @Version: 1.0
 */
@EnableDubbo
@SpringBootApplication
@MapperScan("com.demo.provider.mapper")
public class ProviderApp {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class,args);
        System.out.println("生產者啟動完畢");
    }
}

第四步:添加mapper接口

package com.demo.provider.mapper;

import com.demo.api.entity.User;

/**
 * @Author: laz
 * @CreateTime: 2022-10-26  11:01
 * @Version: 1.0
 */
public interface UserMapper {

    User selectUserById(Long id);
}

xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.provider.mapper.UserMapper">
    <select id="selectUserById" resultType="com.demo.api.entity.User">
        select * from user where id = #{id}
    </select>
</mapper>

第五步:實現(xiàn)接口:

package com.demo.provider.service.impl;

import com.demo.api.entity.User;
import com.demo.api.service.IUserService;
import com.demo.provider.mapper.UserMapper;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;

/**
 * @Author: laz
 * @CreateTime: 2022-10-26  11:00
 * @Version: 1.0
 */
@DubboService
@AllArgsConstructor
public class UserServiceImpl implements IUserService {

    private final UserMapper userMapper;

    public User selectUserById(Long id) {
        User user = userMapper.selectUserById(id);
        return user;
    }
}

第六步:編寫controller層接口

 package com.demo.provider.controller;

import com.demo.api.entity.User;
import com.demo.api.service.IUserService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: laz
 * @CreateTime: 2022-10-26  11:53
 * @Version: 1.0
 */
@RestController
@RequestMapping("/provider")
@AllArgsConstructor
public class UserController {

    private final IUserService userService;

    @RequestMapping("/selectUserById/{id}")
    public User selectUserById(@PathVariable("id")Long id){
        return userService.selectUserById(id);
    }
}

開發(fā)消費者模塊

第一步:導入依賴

<?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>dubbo-demo</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dubbo-customer</artifactId>
    <dependencies>
        <!--dubbo-samples-springcloud-api 項目 依賴-->
        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>dubbo-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-zookeeper</artifactId>
        </dependency>
    </dependencies>

</project>

第二步:添加配置

server:
  port: 8082

spring:
  application:
    name: dubbo-samples-consumer-springCloud

dubbo:
  registry:
    address: zookeeper://43.139.86.193:2181
    timeout: 2000
  protocol:
    name: dubbo

第三步:編寫啟動類:

package com.demo.customer;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
        System.out.println("消費者啟動完畢!");
    }
}

第四步:編寫調用生產者接口

package com.demo.customer.controller;

import com.demo.api.entity.User;
import com.demo.api.service.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/consumer")
@Slf4j
public class ConsumerUserController {

    @DubboReference( protocol = "dubbo", loadbalance = "random")
    private IUserService userService;

    @RequestMapping("/selectUserById/{id}")
    public User getUser(@PathVariable("id") Long id) {
        User user = userService.selectUserById(id);
        log.info("response from provider: {}", user);
        return user;
    }
}

整個項目結構如下:

測試

分別啟動生產者和消費者,在瀏覽器分別調用以下接口:

http://localhost:8081/provider/selectUserById/1
http://localhost:8082/consumer/selectUserById/1

結果:

到此這篇關于Springboot整合dubbo搭建微服務的實現(xiàn)示例的文章就介紹到這了,更多相關Springboot dubbo微服務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • SpringBoot Admin的簡單使用的方法步驟

    SpringBoot Admin的簡單使用的方法步驟

    本文主要介紹了SpringBoot Admin的簡單使用的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring Security 自定義資源服務器實踐過程

    Spring Security 自定義資源服務器實踐過程

    這篇文章主要介紹了Spring Security 自定義資源服務器實踐,我們通過自己搭建的授權服務器和資源服務器,完整體驗了OAuth2流程,需要的朋友可以參考下
    2022-08-08
  • java大話之創(chuàng)建型設計模式教程示例

    java大話之創(chuàng)建型設計模式教程示例

    這篇文章主要為大家介紹了java大話之創(chuàng)建型設計模式教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • java通過isAccessAllowed方法實現(xiàn)訪問控制

    java通過isAccessAllowed方法實現(xiàn)訪問控制

    在Web應用開發(fā)中,使用Apache Shiro框架的isAccessAllowed方法可以有效管理用戶的訪問權限,本文詳細解析了該方法的實現(xiàn)過程,包括用戶身份驗證、權限判斷和安全性分析,下面就一起來了解一下
    2024-09-09
  • springboot中一些比較常用的注解總結

    springboot中一些比較常用的注解總結

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著springboot中一些比較常用的注解展開,文中有非常詳細的總結,需要的朋友可以參考下
    2021-06-06
  • springboot2中使用@JsonFormat注解不生效的解決

    springboot2中使用@JsonFormat注解不生效的解決

    這篇文章主要介紹了springboot2中使用@JsonFormat注解不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java Red5服務器實現(xiàn)流媒體視頻播放

    Java Red5服務器實現(xiàn)流媒體視頻播放

    這篇文章主要介紹了Java Red5服務器實現(xiàn)流媒體視頻播放,對視頻播放感興趣的同學,可以參考下
    2021-04-04
  • Spring?Security?自定義授權服務器實踐記錄

    Spring?Security?自定義授權服務器實踐記錄

    授權服務器(Authorization Server)目前并沒有集成在Spring Security項目中,而是作為獨立項目存在于Spring生態(tài)中,這篇文章主要介紹了Spring?Security?自定義授權服務器實踐,需要的朋友可以參考下
    2022-08-08
  • Java操作FTP實現(xiàn)上傳下載功能

    Java操作FTP實現(xiàn)上傳下載功能

    這篇文章主要為大家詳細介紹了Java如何通過操作FTP實現(xiàn)上傳下載的功能,文中的示例代碼講解詳細,對我們學習Java有一定幫助,需要的可以參考一下
    2022-11-11
  • myBatis組件教程之緩存的實現(xiàn)與使用

    myBatis組件教程之緩存的實現(xiàn)與使用

    這篇文章主要給大家介紹了關于myBatis組件教程之緩存的實現(xiàn)與使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11

最新評論

新竹市| 小金县| 平定县| 龙岩市| 莆田市| 千阳县| 琼结县| 辛集市| 池州市| 丽江市| 梁平县| 北海市| 镇江市| 南丰县| 鲁山县| 探索| 托克逊县| 仙游县| 新蔡县| 永州市| 娄烦县| 奇台县| 桐庐县| 昌乐县| 赤壁市| 弋阳县| 宜兴市| 铅山县| 南漳县| 江陵县| 黄平县| 乡宁县| 阿坝县| 龙岩市| 志丹县| 兴安县| 岳普湖县| 泾阳县| 漳平市| 田东县| 乌兰察布市|