簡體   English   中英

Spring Boot - 在兩個應用程序之間交談

[英]Spring Boot - talking between two applications

我想這是非常基本的東西,但找不到任何有趣的東西。

假設我有一個大型 CRM/ERP Spring Boot 應用程序。 我將其稱為“應用程序 A”。 它僅在公司的 Intranet 內部使用。 出於安全原因,最好不要將其公開。

現在,我想構建另一個更小的應用程序,例如博客或廣告牆,將其稱為“應用程序 B”。 此應用程序的唯一目的是以博客或廣告牆的形式向公眾公開A 管理的一小部分數據。

當然,A 使用某種數據庫引擎,覆蓋了 Hibernate,並且有一些服務等等。 棘手的部分是我不想在應用程序 B 中使用 Hibernate 並且只從應用程序 A 獲取數據,使用 A 擁有的服務遠程獲取它們(它們都可以部署在具有不同域的同一台機器上)。

一般來說,我的問題是; 這是一個好主意嗎,而且,更重要的是,如何做到這一點? 我知道 Facade Pattern 的存在,我知道你可以制作一個 REST API 並使用 json。 但是有更好的方法嗎? 我對 Java 的了解並不像我想的那樣深入。 任何建議將不勝感激。

實際上,我認為這樣做是最好的主意。 此外,通過這種方式,我們可以調用第三方應用程序。 您可以簡單地從另一個應用程序調用應用程序,如下所示。

假設您的應用程序 A 運行本地主機端口 5000,應用程序 B 運行本地主機端口 8080。

應用內方法 A

@GetMapping("/call_a")
public String appA(){
    return "Superb";
}

app-B中的方法

@GetMapping("/call_b")
public String appB(){

    final String uri = "http://localhost:5000/call_a";

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(uri, ResponseEntity.class);

    return result;
}

然后你在 app B 中調用http://localhost:8080/call_b ,它返回Superb的值。

嘿,正如我所看到的,您正在嘗試在兩個 spring 應用程序之間進行對話,該方法顯示在上面的答案中,他們使用休息調用來調用應用程序 A。

但是您也可以嘗試使用 docker。

並使用 docker-compose 連接兩個應用程序。

例如:

version: '3'
services:
  appA:
    ports: 
      - "4001:8081"
  appB:
    ports: 
      - "4002:8082"

您需要在此處添加更多規格.....

現在你可以從 appB 調用 appA 和從 appA 調用 aapB 只用他們的名字。

您可以停止外部訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM