我想这是非常基本的东西,但是找不到任何有趣的东西。
我们说我有一个大型CRM / ERP Spring Boot应用程序。我会称之为#34; app A"。它仅在公司内部网上内部使用。出于安全考虑,最好不要公开曝光。
现在,我想构建另一个更小的应用程序,如博客或广告墙,称之为“应用程序B"”。此应用程序的唯一目的是以博客或广告墙的形式向公众公开由A管理的一小部分数据。
当然A使用某种数据库引擎,覆盖Hibernate,并且有一些服务等等。棘手的部分是我不想在应用B中使用Hibernate,只能从应用A获取数据,远程获取数据(它们都可以部署在具有不同域的同一台机器上),使用A提供的服务。
一般来说,我的问题是;这是一个好主意,更重要的是,如何做到这一点?我知道Facade Pattern的存在,我知道你可以创建一个REST API并使用json。但有更好的方法吗?我并不像我希望的那样深入Java。任何建议将不胜感激。
答案 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。
,您可以停止外部访问。