在Spring Boot中是否可以解析依赖项JAR文件的REST端点

时间:2018-10-11 16:32:40

标签: java spring spring-boot

我有2个Spring引导jar,可以作为2个独立的应用程序正常工作,但是,我被要求将2个jar合并到一个应用程序中

我认为最简单的方法是将app-2作为maven依赖项添加到app-1中,但问题是当app-1启动时,它只能识别app-1 REST端点,而忽略app-的REST端点总共2个。

我希望当app-1启动时,它将自动选择app-2中声明的端点

@RestController
Class2{

@GetMapping(/hello-from-app2)
public String myapp2(){
  return "HELLO FROM APP2"
}

此代码将被忽略,并且在服务器启动时,我只能看到由app-1公开的端点是可见的。

2 个答案:

答案 0 :(得分:2)

如果将App2.jar作为依赖项包含到App1.jar中,则最好的方法是导入App2的配置。 如果您开始添加扫描和其他内容,则会将App1与App2紧密耦合。 App1必须知道不需要的App2实施细节。

如果仅导入App2的配置,则配置详细信息将保持封装。

我假设您有一个针对App1的Java Config类(或XML Config文件),另一个针对App2。我还假设App2的配置包含所有用于组件扫描的必需注释和正确的基本软件包。

在这种情况下,您可以添加这样的导入,并且该导入应立即生效:

@Configuration
@Import(SpringConfigurationApp2.class)
public class SpringConfigurationApp1 {

//... some beans....

}

答案 1 :(得分:1)

我看到了@Diego提供的答案,但是该用户需要在客户端应用程序中进行更改。 (例如@Import(SpringConfigurationApp2.class)。)。

我还有另一种方法,其中客户端(App-1)不需要在应用程序中进行任何更改。它将无缝运行。这种方法是通过使用spring的自动配置,并且spring-boot依赖项使用了相同的功能。

这是我使用自动配置实现的答案。

对于App-2,

1)在resources / META-INF下创建spring.factories文件

2)添加org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ path-to-app-2-application/SpringConfigurationApp2

对于App-1,   只需将App-2包含为maven依赖项,就可以完成了。

这里是一个链接,可获取有关https://dzone.com/articles/what-is-spring-boot-auto-configuration的更多信息。