Spring Boot - 两个应用程序之间的通信

时间:2014-12-06 00:51:43

标签: java spring api spring-boot

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

我们说我有一个大型CRM / ERP Spring Boot应用程序。我会称之为#34; app A"。它仅在公司内部网上内部使用。出于安全考虑,最好不要公开曝光。

现在,我想构建另一个更小的应用程序,如博客或广告墙,称之为“应用程序B"”。此应用程序的唯一目的是以博客或广告墙的形式向公众公开由A管理的一小部分数据。

当然A使用某种数据库引擎,覆盖Hibernate,并且有一些服务等等。棘手的部分是我不想在应用B中使用Hibernate,只能从应用A获取数据,远程获取数据(它们都可以部署在具有不同域的同一台机器上),使用A提供的服务。

一般来说,我的问题是;这是一个好主意,更重要的是,如何做到这一点?我知道Facade Pattern的存在,我知道你可以创建一个REST API并使用json。但有更好的方法吗?我并不像我希望的那样深入Java。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

实际上,我认为这样做是最好的主意。同样,通过这种方式,我们可以调用第三方应用程序。您可以简单地从另一个应用程序中调用一个应用程序,如下所示。

假设您的应用程序A可以运行在localhost端口5000中,而应用程序B可以运行在localhost端口8080中。

应用程序内方法A

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

应用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;
}

然后您在应用B中调用http://localhost:8080/call_b,它将返回Superb的值。

答案 1 :(得分:0)

嘿,据我所知,您正在尝试在两个spring应用程序之间进行通信,上面的答案中显示了这种方法,其中他们使用rest调用来调用应用程序A。

但是您也可以尝试使用docker。

并使用docker-compose连接两个应用。

例如:

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

您需要在此处添加更多规格....

现在您只需按名称即可从appB调用appA和从appA调用aapB。

,您可以停止外部访问。