调用在多模块弹簧项目中打包为 jar 的休息端点

Posted

技术标签:

【中文标题】调用在多模块弹簧项目中打包为 jar 的休息端点【英文标题】:Calling a rest end point which is packaged as a jar in a multi module spring project 【发布时间】:2018-03-18 04:16:07 【问题描述】:

目前这是项目结构

+-- root 
|    +--- pom.xml //parent pom with <modules>
+-- module-web
     +--- pom.xml //web module with <packaging>war</packaging>

这是之后提出的项目结构:

+-- root 
|    +--- pom.xml //parent pom with <modules>
+-- module-a
|    +--- pom.xml (what would be the packaging?)
+-- module-web
     +--- pom.xml //web module with <packaging>war</packaging>

Spring 安全代码在 module-web.xml 中。我需要捕获对 localhost:8080/reset 的调用,这将显示一个忘记密码表单(html 页面位于 module-web 的 src/main/resources/template 中)。这个具有提交按钮的忘记密码表单现在将调用一个 rest api 端点 http://localhost:8080/api/v1/users/username/password_reset ,但要注意的是,将捕获此调用的 @Controller 注释类应该在模块上 - 一个 maven 项目。这甚至可能吗?还是我在这里缺少一些基本的东西?我对多模块 maven 项目的理解通常是 Web 应用程序模块包含所有控制器,而其他模块可能是一些共享类,例如具有某些模型的模块,也可能是另一个执行非常具体的模块等。

【问题讨论】:

【参考方案1】:

显然,我仍然缺乏对 Maven、Spring Security 等的适当知识。经过几天的阅读和尝试,我整理了这一点。

其实很简单。

我想用作重置密码功能端点的@Controller 类位于另一个模块中,该模块是主 Web 应用程序的依赖项。这是通过 maven 打包为 jar 的。由于它是一个依赖项,因此它与主 Web 应用程序位于相同的上下文中。调用 jar 上的休息端点非常简单。就好像终点是在主 Web 应用程序中创建的一样。我在想,当主 Web 应用程序打包在 jar 中(作为依赖项)时,它的端点是不同的。

【讨论】:

以上是关于调用在多模块弹簧项目中打包为 jar 的休息端点的主要内容,如果未能解决你的问题,请参考以下文章

在多模块 Java/scala 项目中有一个通用的 webapp?

在idea中创建多模块的SpringBoot项目

SpringBoot+Maven聚合多项目打包成jar

maven cmd多模块项目,打包某个模块的jar

用maven打包jar项目其中很多模块引用了相同jar包,如何把它些jar公用,让maven打包不把这公用包打进去

java如何将引用了第三方模块的A项目打包成jar包后,在B项目中引用A项目打包成的jar包?