zoukankan      html  css  js  c++  java
  • spring boot入门笔记(四)

    1、多环境配置

      先描述下以前的开发流程:从SVN把项目下载到本地,各种修改配置文件,启动成功;完成功能后上传到公司的测试服务器,修改各种配置文件,启动成功;最后到上线的日子里,把新功能中涉及到的文件打成增量包,上线(尤其其中涉及ip地址、端口的,一定要把配置改好再上线)。每次最害怕的就是,上线的文件中还有各种localhost,完了生产中又是各种集群(一堆的ip、端口),然后就产生了上线事故。

      在springboot中,一般会先准备三套配置,一套本地,一套测试,一套生产。它的思路就是,我把各个环境的配置都准备好,在哪里使用项目,就使用相应的配置,其它的配置会被忽略不使用。具体的操作办法一般如下:

        除了自己的application.properties文件,在同级目录下再新建三个文件:application-dev.properties 开发环境(本地)application-test.properties 测试环境application-prod.properties 生产环境;再在application.properties文件中使用 spring.profiles.active属性来设置,比如spring.profiles.active=test,项目启动时就会加载测试环境application-test.properties的配置。这样,通过命令行的启动方式,就可以激活不同环境的配置,比如,java -jar springbootdemo.jar --spring.profiles.active=test  这样启动的就是测试环境的配置了。我一般会在application.properties中设置spring.profiles.active=dev,使用java  -jar springbootdemo.jar 启动的话,不加参数,就是默认使用配置文件中的spring.profiles.active=dev,而我本地一般都是通过执行springboot的启动类来启动项目,不会把项目打成jar包再进行测试,只有在测试环境和生产环境才会使用命令行启动。

    2、加载顺序

      springboot对数据文件的加载存在一定的规定,从优先级由高到低排序:

        (1)命令行中传入的参数;

        (2)SPRING_APPLICATION_JSON 中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容;

        (3)java:comp/env中的JNDI属性;

        (4)java的系统属性,可以通过System.getProperties()获取的内容;

        (5)操作系统的环境变量;

        (6)通过random.*配置的随机属性;

        (7)位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;

        (8)位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;

        (9)位于当前应用jar包之外application.properties和YAML配置内容;

        (10)位于当前应用jar包之内的application.properties和YAML配置内容;

        (11)在@Configuration注解修改的类中,通过@PropertySource注解定义的属性;

        (12)应用默认属性,使用SpringApplication.setDefaultProperties定义的内容;

     

    3、静态资源映射

      Spring Boot 默认将 /** 所有访问映射到以下目录:
        classpath:/static
        classpath:/public
        classpath:/resources
        classpath:/META-INF/resources

      注意:访问静态资源时不用带上静态资源所在的目录名称!!!加上目录名就找不到了!!

    能访问到的:localhost:8080/a.html ,和同级目录的其他(a.css、a1.png、earth.png),想要访问b.html : localhost:8080/a/b.html。

      自定义静态资源映射:
        第一种方式:静态资源配置类
        @Configuration
        public class WebMvcConfig extends WebMvcConfigurerAdapter {

            @Override
            public void addResourceHandlers(ResourceHandlerRegistry registry) {
                //将所有/static/** 访问都映射到classpath:/static/ 目录下
                registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
            }
        }

        第二种方式:在application.properties配置
        spring.mvc.static-path-pattern=/static/**
        注意:通过spring.mvc.static-path-pattern这种方式配置,会使Spring Boot的默认配置失效,也就是说,/public /resources 等默认配置不能使用。
        配置中配置了静态模式为/static/,就只能通过/static/来访问。

        注意:访问静态资源时带上、不带上静态资源所在的目录名称(static),都可以找到!!!但是目录结构a/b.html什么时候都要带上

  • 相关阅读:
    win7 64位操作系统下使用OFFICE2007 导入表格报错 未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0
    armxilinxeabigcc 不是内部或外部命令,也不是可运行的程序
    上位机 串口 通信 协议
    ZYNQ 调试遇到的种种问题汇总[转帖]
    ZedBoard 安装 Ubuntu11.04
    What the difference between .ipa and .app
    How to create a .ipa file for ios app?
    获取IOS客户端系统版本号
    ios软件支持双语(本地化、国际化)
    objectivec中判断对象是否属于某个类的方法
  • 原文地址:https://www.cnblogs.com/lishiwei/p/9741887.html
Copyright © 2011-2022 走看看