SpringBoot之静态资源
默认静态资源访问路径
SpringBoot默认配置的静态资源路径:ResourceProperties 源码
1 2 3 4 5 6 7 8
| @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) public class ResourceProperties { private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" }; }
|
上面四个目录都可以作为静态资源目录,如下:
我们通过http://localhost:8080/a.js
,http://localhost:8080/b.js
, http://localhost:8080/c.js
和 http://localhost:8080/d.js
都可以访问到响应的js文件。
一般使用默认的static目录。static 目录和 templates 目录 在创建项目勾选web组件时会自动创建,但是创建项目的时候没有勾选web组件则需要自己手动创建。
自定义静态资源访问目录
我们先来看一下ResourceProperties 源码:
1 2 3 4 5 6 7 8 9 10 11 12
| @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) public class ResourceProperties {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS; }
|
我们可以看出,是通过 staticLocations
属性执行的。同时可以看到这个类用 @ConfigurationProperties注解标识了,以``spring.resources为前缀。即可以自己通过
spring.resources.staticLocations` 进行自定义。
1 2 3
| spring.resources.static-locations=classpath:/hao/
spring.mvc.static-path-pattern=/**
|
上面配置的路径,就与下面进行对应了:
通过 http://localhost:8080/hao.js
即可访问了。
当然,通过java配置类也可以进行配置指定:
1 2 3 4 5 6 7
| @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/hao/"); } }
|
上面的Java配置的方式和配置文件配置的方式是一样的,可以实现相同的效果。