欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring boot中的静态资源加载处理方式

程序员文章站 2024-02-28 23:50:52
1.spring boot默认资源处理 spring boot 默认为我们提供了静态资源处理,使用 webmvcautoconfiguration 中的配置各种属性。...

1.spring boot默认资源处理

spring boot 默认为我们提供了静态资源处理,使用 webmvcautoconfiguration 中的配置各种属性。

spring boot默认加载文件的路径是:

/meta-inf/resources/
/resources/
/static/
/public/

这些目录下面, 当然我们也可以从spring boot源码也可以看到java代码:

private static final string[] classpath_resource_locations = { "classpath:/meta-inf/resources/", "classpath:/resources/",  "classpath:/static/", "classpath:/public/" }; 

上面这几个都是静态资源的映射路径,优先级顺序为:meta-inf/resources > resources > static > public

所有本地的静态资源都配置在了classpath下面了, 而非在webapp下了。

如果spring boot提供的sping mvc不符合要求,则可以通过一个配置类(注解有@configuration的类)加上@enablewebmvc注解来实现完全自己控制的mvc配置。

当然,通常情况下,spring boot的自动配置是符合我们大多数需求的。在你既需要保留spring boot提供的便利,有需要增加自己的额外的配置的时候,可以定义一个配置类并继承webmvcconfigureradapter,无需使用@enablewebmvc注解。

如果@enablewebmvc了,那么就会自动覆盖了官方给出的/static, /public, meta-inf/resources, /resources等存放静态资源的目录。

2.自定义资源映射

这里我们提到这个webmvcconfigureradapter这个类,重写这个类中的方法可以让我们增加额外的配置,这里我们就介绍几个常用的。

自定义资源映射addresourcehandlers

比如,我们想自定义静态资源映射目录的话,只需重写addresourcehandlers方法即可。

@configuration
public class simplewebappconfigurer extends webmvcconfigureradapter {
  @override
  public void addresourcehandlers(resourcehandlerregistry registry) {
    registry.addresourcehandler("/myresource/**").addresourcelocations("classpath:/myresource/");
    super.addresourcehandlers(registry);
  }
}

通过addresourcehandler添加映射路径,然后通过addresourcelocations来指定路径。

如果我们将/myresource/* 修改为 /* 与默认的相同时,则会覆盖系统的配置,可以多次使用 addresourcelocations 添加目录,优先级先添加的高于后添加的。

3.使用外部资源

如果我们要指定一个绝对路径的文件夹(如 h:/images/ ),则只需要使用addresourcelocations 指定即可。

// 可以直接使用addresourcelocations 指定磁盘绝对路径,同样可以配置多个位置,注意路径写法需要加上file:
registry.addresourcehandler("/myimgs/**").addresourcelocations("file:h:/myimgs/");

通过配置文件配置,上面是使用代码来定义静态资源的映射,其实spring boot也为我们提供了可以直接在 application.properties(或.yml)中配置的方法。

配置方法如下:

# 默认值为 /**
spring.mvc.static-path-pattern=classpath:/meta-inf/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.resources.static-locations=这里设置要指向的路径,多个使用英文逗号隔开

使用 spring.resources.static-locations 可以重新定义 pattern 所指向的路径,支持 classpath: 和 file: (上面已经做过说明)

注意 spring.mvc.static-path-pattern 只可以定义一个,目前不支持多个逗号分割的方式。

以上所述是小编给大家介绍的spring boot中的静态资源加载处理方式,希望对大家有所帮助