2016-02-25 29 views
1

在最近几个新项目中使用JHipster(强烈推荐!令人惊叹的工作!)后,我试图将一些概念移植到旧的webapp中,实质上将它迁移到Spring Boot和Angular。如何改变Spring Boot提供静态文件的方式?

在春季启动,静态网络资源的默认位置(HTML,JS,CSS等)是在一个名为publicstaticresources位于classpath的根目录下。这些目录中的任何一个都将在spring启动时被选中,并且它们中的文件将通过HTTP访问。

在JHipster中,网络文件位于src/main/webapp目录中。这是默认情况下在经典的Maven WAR项目中使用的目录。

我喜欢这个更好,因为:

  • 更清楚地分开由Java代码
  • 嵌套是那么深使用的类路径资源的静态网页的东西(我们已经有目录嵌套的足够水平和Maven一样!)。

但是,如果我只是在我的项目中创建Web应用程序目录,并把我的HTML文件在里面,他们不通过HTTP可用,并且构建过程中它会创建WEB-INF目录结构。我不想那么做,而在JHipster里,情况并非如此。

如何配置Spring Boot的行为与JHipster类似?

对于那些不熟悉JHipster的人:如何指示Spring Boot从不同文件夹提供静态文件,但不包含在类路径中?

回答

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); 
    } 
} 
+0

好,资产目录应该位于'/ src/main/assets'? –

+0

它通常在'/ src/main/webapp/assets'中。但你可以玩弹簧配置来改变它。 –

+0

顺便说一句:看看JHipster初学者。这有点不同。配置文件名是'WebConfigurer'。 –

相关问题