最近在几个新项目上使用了JHipster(强烈推荐!出色的工作!),我试图将一些概念反向移植到一个较旧的webapp中,基本上将它迁移到Spring Boot和Angular。
在Spring Boot中,静态Web资源(HTML,JS,CSS等)的默认位置位于根目录中的public
,static
或resources
目录中类路径。春季启动将获取这些目录中的任何一个,并且可以通过HTTP访问其中的文件。
在JHipster中,Web文件位于src/main/webapp
目录中。这是默认情况下在经典Maven WAR项目中使用的目录。
我更喜欢这个,因为:
但是,如果我只是在我的项目中创建webapp目录并将我的HTML文件放入其中,则它们不能通过HTTP获得,并且构建过程会在其中创建WEB-INF
目录结构。我不想要那个,而在JHipster中,事实并非如此。
如何配置Spring Boot的行为与JHipster中的行为相同?
对于那些不熟悉JHipster的人:如何指示Spring Boot从不同的文件夹提供静态文件,不包含在类路径中?
答案 0 :(得分:1)
您可以尝试以下配置。这个想法应该很直接。它确实在assets
目录中注册工件。
public class AppMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// Including all static resources.
registry.addResourceHandler("/assets/**",
"/css/**",
"/img/**",
"/js/**"
).addResourceLocations("/assets/",
"/css/",
"/img/",
"/js/"
).resourceChain(true)
.addResolver(new PathResourceResolver());
super.addResourceHandlers(registry);
}
}
答案 1 :(得分:0)
您可以在application.propertise中添加以下代码:
spring.resources.static-locations=classpath:/webapp/
以及application.yaml中的以下代码:
resources:
static-locations: classpath:/webapp/