我正在使用Spring Boot。我的主课非常简单
@ComponentScan
@EnableAutoConfiguration
@Configuration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
#2。现在我想将我的静态内容外化到一个jar文件中。所以,下面是jar项目
/pom.xml
/src/main/resources/META-INF/resources/hello.json // here is my resource
我做maven install
并将依赖项放入主应用程序,正常运行应用程序。现在我可以调用http://localhost:8080/hello.json
来获取我的hello.json文件
#3。然后,下一步是使用Apache Tiles作为我的主要Web项目,因此我创建了一个@EnableWebMvc
类来配置tilesViewResolver
@Configuration
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
public @Bean TilesViewResolver tilesViewResolver() {
return new TilesViewResolver();
}
public @Bean TilesConfigurer tilesConfigurer() {
TilesConfigurer ret = new TilesConfigurer();
ret.setDefinitions(new String[] { "classpath:tiles.xml" });
return ret;
}
}
然后我再次启动应用程序并尝试hello.json
以确保一切正常。但是,404页面出现了。删除WebMvcConfiguration
,然后返回hello.json
。
我应该采取什么配置来解决此问题?
非常感谢。
答案 0 :(得分:3)
在Spring MVC中,使用XML配置,您必须拥有如下标记来为静态内容提供服务:
<mvc:resources mapping="/js/**" location="/js/"/>
这暗示Spring Boot正在做某事以自动猜测你有静态内容并在META-INF / resources中正确设置上面的例子。它并不是真正“神奇”,而是他们使用@EnableWebMvc
的默认Java配置,它具有一些非常可靠的默认值。
当你提供自己的@EnableWebMvc
时,我的猜测是你正在覆盖他们的“默认”。为了添加一个资源处理程序,你可以这样做:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(31556926);
}
这相当于上面的XML。