SpringBoot中静态资源放哪里

    科技2022-07-21  115

    使用SpringBoot开发web时,静态资源放在那里? 静态资源的存放路径,通过源码中WebMvcAutoConfiguration类中的addResourceHandlers()方法指定:"/webjars/**"目录下 SpringBoot项目中放入的 js、css等静态资源,不像maven中放在webapp下,SpringBoot是把这些文件打成jar包引入,以 jar 包的形式提供静态资源。 从webjar官网中获取依赖,引入到pom文件即可 此时已经引入了jquery的jar包,在访问时直接从webjars开始写相关路径。

    那么要是自己写静态资源文件该怎么办呢? 源码中WebMvcAutoConfiguration类中的进入getResourceLocations中,最后可以看见

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[] {"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"}

    可以看见我们可以在SPringBoot项目中的resources文件夹中创建如下四种文件来存放我们自己的静态资源,SpringBoot会自动扫描这些文件,当然我们也可以把自己写的文件打成 jar 再引入,但是我们的目录结构就必须和别人的一样,就很麻烦(所以不推荐)

    - resources - /META-INF/resources/ - /resources/ - /static/ - /public/

    我们该如何设置欢迎页呢? 在源码中,WebMvcAutoConfiguration类中的getWelcomePage()-> getIndexHtml() 方法中可以看见location + “index.html”,而location就是上面的CLASSPATH_RESOURCE_LOCATION 一大堆位置,也就是说我们在上面这四个文件夹中的index.html文件就是欢迎页

    我们怎么设置网页标签的 logo ? 网页标签logo有固定的名字:favicon.ico 我们只需要将favicon.icon文件放在上面四个文件夹中的任意一个即可。

    那如何自定义静态资源存放目录呢? 一般来说约定优于配置,不遵守约定,就自己配置。我们可以直接修改存放路径,在properties文件中,可以一次配置多个,用逗号隔开

    spring.resources.static-locations=classpath:/res/, classpath:/img/

    注意:自定义静态资源路径后,默认存放路径会失效

    Processed: 0.013, SQL: 8