05.SpringBoot之静态资源

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/" };
}

上面四个目录都可以作为静态资源目录,如下:

image-20200301125006906

我们通过http://localhost:8080/a.jshttp://localhost:8080/b.jshttp://localhost:8080/c.jshttp://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/" };

/**
* Locations of static resources. Defaults to classpath:[/META-INF/resources/,
* /resources/, /static/, /public/].
*/
private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;
}

我们可以看出,是通过 staticLocations 属性执行的。同时可以看到这个类用 @ConfigurationProperties注解标识了,以``spring.resources为前缀。即可以自己通过spring.resources.staticLocations` 进行自定义。

1
2
3
spring.resources.static-locations=classpath:/hao/
# 静态资源访问URL
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配置的方式和配置文件配置的方式是一样的,可以实现相同的效果。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×