调用在多模块弹簧项目中打包为 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?