我正在学习java ee相关技术(我是一个相对新手),并尝试使用Spring和Thymeleaf作为前端编写简单的Web应用程序,但我遇到了一些问题 模块化。
我发现它用于将 .html 文件打包到 WEB-INF 目录中以确保安全,但是,据我猜测,这意味着我必须将所有 View 放在那里,在这个项目中拥有 Controller 。我想通过拥有许多项目来避免这种情况,例如:
- 网络应用
- 管理模块
- 用户模块
- 核心模块
并且每个都有自己的、模块特定的 Controller 和 View (html)以及网络应用程序 将它们全部合并到一个大项目中。
在 Thymelaf 中,我发现了类似 ClassLoaderTemplateResolver 的东西,并得到了(也许是愚蠢的想法)如何将大项目分成许多项目 - 将 html 放入类路径资源目录中。 通过这个我可以从任何模块项目请求任何 html View 。这是否违反了某些安全原因?
我想问是否有人遇到类似的问题并找到正确的解决方案如何优雅地将 html web-app 项目划分为许多较小的“特定于上下文”的项目?
这是我当前的项目结构。蓝色箭头表示哪个 View 连接到哪个 Controller : http://prntscr.com/4tqt9m
这是我在这里提出的第一个问题,所以我希望您能理解我。
提前谢谢您。
最佳答案
您可以使用类路径查找在运行时合并多个 Spring 和 Thymeleaf 模块。只需确保您提供不同的限定名称/文件夹结构(例如:不同包上名为views/index.html的两个文件可能会导致令人困惑的不一致)
对于 Spring,如果正确配置类路径扫描,它应该考虑类路径上的 jar 包。
使用 Thymeleaf,尝试设置一个带有前缀的 TemplateResolver,例如 classpath:/templates/
,然后在不同的模块上设置文件夹结构,例如 src/main/resources/templates/package-a/foo.html
, src/main/resources/templates/package-b/foo.html
。我还没有尝试过这个,并且不能 100% 确定类加载器可以合并这些。
关于java - Spring 和 thymeleaf 以 html 作为资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226217/