为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2021-11-11 18:14:36
我有 2 个 Spring boot jar,它们可以作为 2 个独立的应用程序正常工作,但是,我被要求将 2 个 jar 合并到一个应用程序中我认为最简单的事情是将 app-2 作为 maven 依赖项添加到 app-1 中,但问题是当 app-1 启动时,它只识别 app-1 REST 端点,而完全忽略 app-2 的 REST 端点。我希望当 app-1 启动时它会自动选择 app-2 中声明的端点@RestControllerClass2{@GetMapping(/hello-from-app2)public String myapp2(){  return "HELLO FROM APP2"}此代码被忽略,在服务器启动时,我只能看到 app-1 公开的端点可见。
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

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


如果只是导入 App2 的配置,配置细节会保持封装状态。


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


如果是这种情况,您可以添加这样的导入,它应该立即起作用:


@Configuration

@Import(SpringConfigurationApp2.class)

public class SpringConfigurationApp1 {


//... some beans....


}


查看完整回答
反对 回复 2021-11-11
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

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

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

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

对于 App-2,

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

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 的更多信息的链接。


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信