• 框架——容器框架——spring_boot——配置项


    配置的知识点分为三部分。

    第一部分,介绍加载配置项。

    第二部分,介绍具体的配置项。

    第三部分,介绍配置的方式。

    1、加载

    1.1 来源 & 顺序 

    加载的来源如下,若存在相同变量,靠后的会覆盖靠前的。

      1.   SpringApplication.setDefaultProperties与 SpringBootBuilder.properties

     Spring系统的环境变量,类似于JVM设置环境变量。

      2.   @PropertySource

    配置类中引入的properties文件,通常不适用,因为配置文件过多,维护起来越困难。

    3.   application.properties或者 application-{profile}.properties

    应用的配置文件,或者是某个特定环境独有的配置文件,常见的环境有dev开发,test测试,prod生产。

    4.   RandomValuePropertySource

    它是自动加载的,是生成随机数的工具类,示例如下:

    my.secret=${random.value}
    my.number=${random.int}
    my.bignumber=${random.long}
    my.uuid=${random.uuid}
    my.number.less.than.ten=${random.int(10)}
    my.number.in.range=${random.int[1024,65536]}
    

      5.   OS变量,JVM变量

    操作系统的环境变量,JVM的环境变量。

      6.   ServletContext, ServletConfig(不推荐)

    ServletContext上下文对象,以及它的配置类,通常都是web程序,都适用。

    7.   spring_application_json, Command line args(不推荐)

    命令行参数,单个的key,value对,批量的JSON串。只适用于从命令行启动spring boot项目的场景。

      8.   @TestPropertySource & @SpringBootTest(不推荐)

    加载测试的配置文件,只适用于测试类,

      9.   devtools global settings properties(不推荐)

    devtools启用之后,会加载一些默认的配置项,但是通常在生产环境下不使用该工具。

    1.2   profile

      Profile指针对不同场景加载不同的配置文件,此时配置文件的名称默认为application-{profile}.properties。

    使用Profile有两个步骤,

    1. 创建application-{profile}.properties文件,本示例中创建application-test和application-production
    2. 激活profile。

    激活profile的方式有三种

    1. 第一种设置spring.profiles.active变量,通常在application.properties中设置。
    2. 第二种方式在启动类上添加@ActiveProfiles注解
    3. 第三种方式调用SpringBootBuilder的profiles方法。

    2、配置项

    2.1 spring.main

    spring:
      main:
        lazy-initialization: true # 延迟加载
        # 注入bean时,若同名bean已存在,则覆盖,默认情况下会报错
        allow-bean-definition-overriding: true
        web-application-type: servlet # web应用程序的类型,通常为servlet
        banner-mode: console # banner的模式,通常为console,
        # 注册关闭时的钩子,即关闭程序时,执行一段自定义代码,类似于前端的事件。
        register-shutdown-hook: true
    

    2.2   Banner

      Banner的知识点分为两个部分,配置项,类型

      配置项:

    -- 可选值三种,off禁用,console(控制台),LOG(日志文件)
    spring.main.banner-mode=off
    spring:
      banner:
        charset: UTF-8 # 字符集
        location: classpath:banner.txt # banner的路径
        image: # 此时banner类型为ImageBanner
          location: classpath:banner.gif # 图片路径
           76 # 宽度
          height: 100 # 高度
          margin: 2 # 边距
          invert: false # 是否启用暗黑模式
          bitdepth: 4 # bit位数
          pixelmode: text # 像素 px模式 
    

      类型:

    SpringBootBanner:默认的方式,输出Spring boot横幅

    ResourceBanner:由资源文件提供Banner的内容

    ImageBanner:Banner的内容为图片。

    自定义Banner: Banner的内容为自定义的内容。

    第一步,实现Banner接口

    /**
     * 自定义Banner,输出一条message
     */
    public class MessageBanner implements Banner {
    	// 自定义消息
    	private String message;
    
    	public MessageBanner(String message) {
    		this.message = message;
    	}
    
    	@Override
    	public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
    		out.print(this.message);
    	}
    }
    

      第二步,配置Banner。

    builder.banner(new MessageBanner("\n This IS MY OWN TEST BANNER!\n"));
    

      第三步,验证。略。

      链接:

    http://patorjk.com/software/taag/

    http://www.network-science.de/ascii/

    3、配置方式

    大类分为两种,程序方式,配置文件方式。

    3.1  程序方式

    第一种方式,调用SpringApplication对象的setXX方法。

    SpringApplication application = new SpringApplication(MyApplication.class);
    application.setBannerMode(Banner.Mode.OFF);
    

      第二种方式,调用SpringApplicationBuilder的方法。

    new SpringApplicationBuilder()
            .sources(Parent.class)
            .child(Application.class)
            .bannerMode(Banner.Mode.OFF)
            .run(args);
    

    3.2  文件方式

    XML方式,老古董了,略。

    properties方式,没有提示,而且配置项过多时,不方便阅读,略。

    yaml方式,有提示,而且很方便。

  • 相关阅读:
    cs231n --- 3 : Convolutional Neural Networks (CNNs / ConvNets)
    cs231n --- 1:线性svm与softmax
    Python的下划线_
    Python的类(class)
    python self
    MFC中应用对象的成员:窗口指针m_pMainWnd说明
    MSTP+VRRP组合组网
    VRRP组网下同网段内配置基于全局地址池的DHCP服务器
    路由器/交换机Console口登录密码丢失后如何恢复
    交换机处于同一网络作为DHCP中继与服务器
  • 原文地址:https://www.cnblogs.com/rain144576/p/16212768.html
Copyright © 2020-2023  润新知