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

springboot項(xiàng)目同時(shí)啟動(dòng)web服務(wù)和grpc服務(wù)的方法

 更新時(shí)間:2024年02月02日 10:18:18   作者:神的孩子都在歌唱  
本文主要介紹了springboot項(xiàng)目同時(shí)啟動(dòng)web服務(wù)和grpc服務(wù)的方法,通過實(shí)際代碼示例展示了實(shí)現(xiàn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

這是我在這個(gè)網(wǎng)站整理的筆記,有錯(cuò)誤的地方請指出

一. 創(chuàng)建項(xiàng)目

我們創(chuàng)建一個(gè)maven項(xiàng)目

image-20230918105933085

如下,maven項(xiàng)目創(chuàng)建成功了

image-20230918112649578

二. 引入依賴

引入spring-boot-starter-web依賴和grpc-client-spring-boot-starter依賴

 <dependencies>
        <!-- BEGIN 如果想使用 Tomcat 注釋掉以下代碼 -->
        <!-- SpringBoot Web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
            <version>2.5.4</version>
        </dependency>
        <!-- web 容器使用 undertow 性能更強(qiáng) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
            <version>2.5.4</version>
        </dependency>

        <dependency>
            <groupId>net.devh</groupId>
            <artifactId>grpc-client-spring-boot-starter</artifactId>
            <version>2.13.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>net.devh</groupId>
            <artifactId>grpc-server-spring-boot-starter</artifactId>
            <version>2.13.1.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.2</version>
            </extension>
        </extensions>
        <plugins>

            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.6.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.16.1:exe:${os.detected.classifier}</pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

然后我們創(chuàng)建一個(gè)application.yml文件,指定兩個(gè)服務(wù)的啟動(dòng)端口,不要設(shè)置為一樣的端口,因?yàn)镠TTP和gRPC是兩個(gè)不同的協(xié)議,它們的實(shí)現(xiàn)方式和通信方式都不同。在同一個(gè)端口上同時(shí)使用HTTP和gRPC會導(dǎo)致端口沖突,無法正常工作。

# 開發(fā)環(huán)境配置
server:
  # 服務(wù)器的HTTP端口,默認(rèn)為8089
  port: 8089
grpc:
  server:
    port:
      9091

三. 測試

做完以上操作后,我們就可以編寫http服務(wù)和grpc服務(wù)了,以下是一個(gè)簡單的測試代碼

啟動(dòng)類

/**
 * @author: 那就叫小智吧
 * @date: 2023/9/18 14:50
 * @Version 1.0
 * @Description:
 */
@SpringBootApplication
public class ChenApplication {

    public static void main(String[] args)
    { SpringApplication.run(ChenApplication.class, args);
        System.out.println("啟動(dòng)成功");
    }
}

3.1 http服務(wù)

創(chuàng)建一個(gè)HelloWordWebController接口

/**
 * @author: 那就叫小智吧
 * @date: 2023/9/18 13:43
 * @Version 1.0
 * @Description:
 */
@RestController
public class HelloWordWebController {

    @GetMapping(value = "/hello")
    public String hello() {
        return "神的孩子都在歌唱";
    }
}

測試結(jié)果

image-20230918145649999

3.2 grpc服務(wù)

proto文件

syntax = "proto3";

option java_multiple_files = true;
package helloWordGrpc;

message Person {
  string first_name = 1;
  string last_name = 2;
}

message Greeting {
  string message = 1;
}

service HelloWorldService {
  rpc sayHello (Person) returns (Greeting);
}

這里需要mvn clean 和mvn install 一下 ,確保target文件里面有這幾個(gè)對象

image-20230918151931848

創(chuàng)建一個(gè)HelloWorldGrpcController接口

@GrpcService
public class HelloWorldGrpcController extends HelloWorldServiceGrpc.HelloWorldServiceImplBase {
  @Override
  public void sayHello(Person request,
                       StreamObserver<Greeting> responseObserver) {
      String message = "Hello " + request.getFirstName() + " "
          + request.getLastName() + "!";
      Greeting greeting =
          Greeting.newBuilder().setMessage(message).build();

      responseObserver.onNext(greeting);
      responseObserver.onCompleted();
  }
}

測試結(jié)果

image-20230918151504401

四. 整體代碼結(jié)構(gòu)

image-20230918152154104

 到此這篇關(guān)于springboot項(xiàng)目同時(shí)啟動(dòng)web服務(wù)和grpc服務(wù)的方法的文章就介紹到這了,更多相關(guān)springboot啟動(dòng)web和grpc服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java利用Request請求獲取IP地址的方法詳解

    Java利用Request請求獲取IP地址的方法詳解

    在開發(fā)中我們經(jīng)常需要獲取用戶IP地址,通過地址來實(shí)現(xiàn)一些功能,下面這篇文章主要給大家介紹了關(guān)于Java利用Request請求獲取IP地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 詳解JAVA 設(shè)計(jì)模式之狀態(tài)模式

    詳解JAVA 設(shè)計(jì)模式之狀態(tài)模式

    這篇文章主要介紹了JAVA 狀態(tài)模式的的相關(guān)資料,文中講解的非常細(xì)致,幫助大家更好的學(xué)習(xí)理解JAVA 設(shè)計(jì)模式,感興趣的朋友可以了解下
    2020-06-06
  • SpringBoot手動(dòng)開啟事務(wù):DataSourceTransactionManager問題

    SpringBoot手動(dòng)開啟事務(wù):DataSourceTransactionManager問題

    這篇文章主要介紹了SpringBoot手動(dòng)開啟事務(wù):DataSourceTransactionManager問題,具有很好的價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 整理Java編程中字符串的常用操作方法

    整理Java編程中字符串的常用操作方法

    這篇文章主要介紹了Java編程中字符串的常用操作方法的整理,字符串處理是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-02-02
  • Java設(shè)計(jì)模式之裝飾模式(Decorator模式)介紹

    Java設(shè)計(jì)模式之裝飾模式(Decorator模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之裝飾模式(Decorator模式)介紹,本文講解了為什么使用Decorator、如何使用裝飾模式、Jive中的Decorator實(shí)現(xiàn)等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • MyBatis-plus與數(shù)據(jù)庫字段的映射方式

    MyBatis-plus與數(shù)據(jù)庫字段的映射方式

    MyBatis-plus默認(rèn)開啟駝峰命名規(guī)則映射,即駝峰轉(zhuǎn)為下劃線,如果數(shù)據(jù)庫字段也是駝峰命名,會導(dǎo)致映射錯(cuò)誤,解決方法有兩種:使用@TableField注解指定數(shù)據(jù)庫字段名或關(guān)閉駝峰命名規(guī)則映射,數(shù)據(jù)庫設(shè)計(jì)規(guī)范應(yīng)優(yōu)先使用蛇形命名法,即全部小寫字母并用下劃線連接
    2025-11-11
  • 使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng)的實(shí)現(xiàn)方法

    使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng)的實(shí)現(xiàn)方法

    本文介紹了如何使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng),通過自定義事件和監(jiān)聽器,實(shí)現(xiàn)模塊之間的松耦合,提升代碼的可維護(hù)性和擴(kuò)展性。同時(shí)還介紹了異步事件和事件傳遞的相關(guān)知識
    2023-04-04
  • JAVA生成pdf文件的實(shí)操指南

    JAVA生成pdf文件的實(shí)操指南

    最近項(xiàng)目需要實(shí)現(xiàn)PDF下載的功能,由于沒有這方面的經(jīng)驗(yàn),從網(wǎng)上花了很長時(shí)間才找到相關(guān)的資料,下面這篇文章主要給大家介紹了關(guān)于JAVA生成pdf文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 在java poi導(dǎo)入Excel通用工具類示例詳解

    在java poi導(dǎo)入Excel通用工具類示例詳解

    這篇文章主要給大家介紹了關(guān)于在java poi導(dǎo)入Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Java代理模式與動(dòng)態(tài)代理之間的關(guān)系以及概念

    Java代理模式與動(dòng)態(tài)代理之間的關(guān)系以及概念

    代理模式是開發(fā)中常見的一種設(shè)計(jì)模式,使用代理模式可以很好的對程序進(jìn)行橫向擴(kuò)展。動(dòng)態(tài)代理:代理類在程序運(yùn)行時(shí)被創(chuàng)建的代理方式。關(guān)鍵在于動(dòng)態(tài),程序具有了動(dòng)態(tài)特性,可以在運(yùn)行期間根據(jù)不同的目標(biāo)對象生成動(dòng)態(tài)代理對象
    2023-02-02

最新評論

郎溪县| 辽源市| 瑞丽市| 甘德县| 开鲁县| 周宁县| 胶南市| 元谋县| 铁力市| 泰来县| 旌德县| 广西| 公主岭市| 乐清市| 泰来县| 肥乡县| 密云县| 南安市| 新龙县| 平南县| 平南县| 嵩明县| 大同市| 西充县| 舟曲县| 江陵县| 彰化县| 临朐县| 林州市| 环江| 泾源县| 万安县| 万载县| 宁都县| 博兴县| 汽车| 克东县| 托克托县| 乐安县| 闸北区| 乐都县|