• SpringBoot 配置文件存放位置及读取顺序


    SpringBoot配置文件可以使用yml格式和properties格式

    分别的默认命名为:application.yml、application.properties

    存放目录

    SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:

    • 项目根目录下
    • 项目根目录中config目录下
    • 项目的resources目录下
    • 项目resources目录中config目录下

     

    读取顺序

         如果在不同的目录中存在多个配置文件,它的读取顺序是:

            1、config/application.properties(项目根目录中config目录下)

            2、config/application.yml

            3、application.properties(项目根目录下)

            4、application.yml

            5、resources/config/application.properties(项目resources目录中config目录下)

            6、resources/config/application.yml

            7、resources/application.properties(项目的resources目录下)

            8、resources/application.yml

        注:

            1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。

            2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。

            3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下”

    SpringBoot资源文件的存放位置设置

    SpringBoot默认的存放静态资源文件的位置是在:

    里面的。

    注:SpringBoot中的src/main/resources/资源文件夹对应classpath:。

     
    默认存放静态资源文件的位置,在SpringBoot项目中的文件夹位置为:


    即:搜索文件夹的优先顺序和数组中的顺序一致。

    当我们访问:IP地址:端口号/时,就相当于访问到了这四个文件夹。

    如:访问:localhost:8080/123.jpg时,就会先去看src/main/resources资源文件夹下的META-INF下的resoures文件夹中是否有123.jpg,没  有的话再看src/main/resources资源文件夹下的resoures文件夹中是否有123.jpg,没有的话再看src/main/resources资源文件夹下的static文件夹中是否有123.jpg,没有的话再看src/main/resources资源文件夹下的public文件夹中是否有123.jpg。

     
    手动配置其搜索资源文件的文件夹位置
     
    把文件放在SpringBoot项目下的classpath中
    方式一:通过配置类

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

    /**
    * 主动设置URL匹配路径
    *
    * @author JustryDeng
    * @date 2018年8月4日 上午1:36:38
    */
    @Configuration
    public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/fileData/**").addResourceLocations("classpath:/myFile/");
    super.addResourceHandlers(registry);
    }
    }
    此时:访问IP地址:端口号/fileData/时,就相当于到了src/main/resources资源文件夹下的myFile文件夹中了,图示说明:

    注意:此时默认的四个文件夹都失效了,如果想让默认的四个文件夹依然有效,那么可以在配置类中多次通过.addResourceHandler添加指定那四个文件夹。

    方式二:通过配置文件

    # 设置当URI为/fileData/**时,才进过静态资源
    # 注:如果设置为/**,那么表示任何访问都会经过静态资源路径
    spring.mvc.static-path-pattern=/fileData/**

    # 自定义路径
    # 注:自定义路径时,默认的四个文件夹下中的“META-INF下的resoures文件夹”仍然有效,其他三个文件夹失效
    # (此时:访问ip:端口号/fileData/时,相当于访问到了 “自定义的文件夹”和 “META-INF下的resoures文件夹”);
    # 注:搜索文件时,自定义的文件夹的优先级要高于默认的四个文件夹
    spring.resources.static-locations=classpath:/myFile/

    # 提示:如果我们显式地把自定义文件夹 和 默认的四个文件夹都写出来,那么都会有效(此时,优先级 从左至右 依次降低)
    #spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/myFile/
     
    把文件放在项目jar包之外的服务器磁盘中的某个文件夹中
    方式一:通过配置类

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

    /**
    * 主动设置URL匹配路径
    *
    * @author JustryDeng
    * @date 2018年8月4日 上午1:36:38
    */
    @Configuration
    public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 指定到D盘下的myFile文件夹
    // 注:如果是Linux的话,直接指定文件夹路径即可,不需要指定哪个盘(Linux就一个可用盘)
    registry.addResourceHandler("/fileData/**").addResourceLocations("file:D:/myFile/");
    super.addResourceHandlers(registry);
    }
    }
    此时:我们访问IP地址:端口号/fileData/时,就相当于到了服务器D盘下的myFile文件夹中了。

    注意:此时默认的四个文件夹都失效了,如果想让默认的四个文件夹依然有效,那么可以在配置类中通过.addResourceHandler多次添加四个文件夹。

    方式二:通过配置文件

    # 设置当URI为/fileData/**时,才进过静态资源
    # 注:如果设置为/**,那么表示任何访问都会经过静态资源路径
    spring.mvc.static-path-pattern=/fileData/**

    # 自定义路径
    # 注:自定义路径时,默认的四个文件夹下中的“META-INF下的resoures文件夹”仍然有效,其他三个文件夹失效
    # (此时:访问ip:端口号/fileData/时,相当于访问到了 “自定义的文件夹”和 “META-INF下的resoures文件夹”);
    # 注:搜索文件时,自定义的文件夹的优先级要高于默认的四个文件夹
    spring.resources.static-locations=file:D:/myFile/

    # 提示:如果我们显式地把自定义文件夹 和 默认的四个文件夹都写出来,那么都会有效(此时,优先级 从左至右 依次降低)
    #spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:D:/myFile/
     
    ---------------------
    作者:justry_deng
    来源:CSDN
    原文:https://blog.csdn.net/justry_deng/article/details/81406752
    版权声明:本文为博主原创文章,转载请附上博文链接!

    多目录问题

    直接上配置,如下:

    在springboot的application.properties的配置文件中加入:

    spring.resources.static-locations=file:D://uploads
    D://images   -->是你存放的外部文件的一个文件夹地址

    然后加入一个这个问价你的映射:

    spring.mvc.static-path-pattern=/**
    注意:里面必须为   /**,不然你项目的其他静态资源就会访问不到

    假如你的D://uploads下面两个文件一个存放图片的image文件里面有image.jpg,一个存放excel的excel文件里面有excel.xls

    你就可以启动项目然后在地址栏输入:localhoset/images/image.jpg访问image.jpg图片

                                                           localhoset/excel/excel.xls访问excel.xls文件

    其实就是规定一个你项目外部文件的地址,然后在项目内部映射这个外部文件地址,因为springboot是内置tomac服务器
    ---------------------
    作者:duangecho
    来源:CSDN
    原文:https://blog.csdn.net/duangecho/article/details/80099810
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解【转】
    Device Tree 详解【转】
    浅析Linux DeviceTree【转】
    【spring boot】spring boot 拦截器
    【jQuery】jQuery/js 判断字符串是否JSON字符串
    【java】java中的 &= 和 |= 和 ^= 的区别
    zabbix创建触发器、action,发送报警邮件
    html iframe禁用右键
    mysql数据库mysqldump方式备份
    JDK8新特性
  • 原文地址:https://www.cnblogs.com/yuluoxingkong/p/10443077.html
Copyright © 2020-2023  润新知