zoukankan      html  css  js  c++  java
  • SpringBoot的核心配置文件


    Spring Boot 的核心配置文件用于配置 Spring Boot 程序,名字必须以 application 开始

    一、核心配置格式

    1. .properties 文件(默认采用该文件)

    在 02-springboot-springmvc 项目基础上,进行修改,也就是在上一个项目上

    项目名称为:03-springboot-port-context-path

    通过修改 application.properties 配置文件,在修改默认 tomcat 端口号及项目上下文件根键值对的 properties 属性文件配置方式

    #设置内嵌的Tomcat的端口号
    server.port=9090
    
    #配置项目的上下文根
    server.servlet.context-path=/03-springboot-port-context-path
    
    

    配置完毕之后,启动,浏览器测试

    页面显示结果

    2. .yml 文件

    项目名称:04-springboot-yml在03的项目基础上

    为了区分,把SpringbootController稍作修改

    package com.md.springboot.web;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * @author MD
     * @create 2020-08-20 16:40
     */
    @Controller
    public class SpringbootController {
    
        @RequestMapping(value = "/say")
        @ResponseBody
        public String say(String name){
            return "hello " + name;
        }
    }
    
    

    yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比 xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀

    在resources下把application.properties删除掉,新建一个 application.yml

    然后启动,通过浏览器进行访问,也是可以的

    注意:

    当两种格式配置文件同时存在,使用的是.properties 配置文件

    二、多环境配置

    在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot 提供了多环境配置,具体步骤如下

    1. 步骤如下

    项目名称05-springboot-multi-environment,在上一个的基础上

    为每个环境创建一个配置文件,命名必须以 application- 环境标识.properties|yml

    其中application-dev.properties

    #开发环境
    #设置内嵌的Tomcat的端口号
    server.port=8080
    
    #配置项目的上下文根
    server.servlet.context-path=/05-springboot-multi-environment
    

    application-product.properties

    #生成环境
    #设置内嵌的Tomcat的端口号
    server.port=8081
    
    #配置项目的上下文根
    server.servlet.context-path=/05-springboot-multi-environment
    

    application-test.properties

    #测试环境
    #设置内嵌的Tomcat的端口号
    server.port=8082
    
    #配置项目的上下文根
    server.servlet.context-path=/05-springboot-multi-environment
    

    在总配置文件 application.properties 进行环境的激活

    #总配置文件
    
    
    #激活开发环境
    #spring.profiles.active=dev
    
    
    #激活测试环境
    #spring.profiles.active=test
    
    #激活生产环境
    spring.profiles.active=product
    

    等号右边的值和配置文件的环境标识名一致 , 可以更改总配置文件的配置

    也就是等号右边的值和配置文件和“-”后面值一样,就是使用的那种方式

    运行,启动,测试

    如果是以yml结尾的配置文件,和这个是类似的,这里就不详细说了

    三、Spring Boot 自定义配置

    在 SpringBoot 的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值

    1. @Value 注解

    在项目06-springboot-custom中,创建步骤就不详细说了,之前写的有

    在核心配置文件application.properties中,添加两个自定义配置项 school.name 和web。在 IDEA 中可以看到这两个属性不能被 SpringBoot 识别,背景是桔色的

    server.port=9090
    
    server.servlet.context-path=/
    
    
    #设置自定义的
    school.name=mit
    
    web=http://www.baidu.com
    
    

    在 SpringBootController 中定义属性,并使用@Value 注解,并对其方法进行测试

    package com.md.springboot.web;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * @author MD
     * @create 2020-08-20 17:48
     */
    
    @Controller
    public class SpringBootController {
    
        @Value("${school.name}")
        private String schoolName;
    
    
        @Value("${web}")
        private String web;
    
    
    
        @RequestMapping(value = "/say")
        @ResponseBody
        public String say(){
            return schoolName+"-------"+web;
        }
    
    }
    
    

    启动,测试

    2. @ConfigurationProperties

    项目名称:07-springboot-custom

    将整个文件映射成一个对象,用于自定义配置项比较多的情况

    在 com.md.springboot.config 包下创建 ConfigInfo 类,

    并为该类加上 Component 和ConfigurationProperties 注解,并在 ConfigurationProperties 注解中添加属性 prefix,作用可以区分同名配置

    package com.md.springboot.config;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * @author MD
     * @create 2020-08-20 17:56
     */
    
    // 将此类交给spring容器进行管理
    @Component
    @ConfigurationProperties(prefix = "school")
    public class ConfigInfo {
        private String name;
        private String web;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getWeb() {
            return web;
        }
    
        public void setWeb(String web) {
            this.web = web;
        }
    }
    
    

    application.properties 配置文件

    server.port=9090
    
    server.servlet.context-path=/
    
    
    #设置自定义的,注意都设置了school开头,如果还有其他的name,方便区分
    school.name=mit
    
    school.web=http://www.jd.com
    
    

    在 SpringBootController 中注入 ConfigInfo 配置类

    此时的使用方法和value的不同,注意区别

    package com.md.springboot.web;
    
    import com.md.springboot.config.ConfigInfo;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * @author MD
     * @create 2020-08-20 17:59
     */
    
    @Controller
    public class SpringBootController {
    
    // 自动注入
        @Autowired
        private ConfigInfo configInfo;
    
        @RequestMapping(value = "/config")
        public  @ResponseBody String say(){
            return configInfo.getName()+"============="+configInfo.getWeb();
        }
    }
    
    

    运行,测试

    3. 警告解决

    在 ConfigInfo 类中使用了 ConfigurationProperties 注解后,IDEA 会出现一个警告,但不影响程序的执行

    如果想不看到这个警告,可以添加一个依赖,在pom.xml中

    <!--出现警告-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    

    这样就可以了

    4. 中文乱码

    如果在 SpringBoot 核心配置文件中有中文信息,会出现乱码:

    • 一般在配置文件中,不建议出现中文(注释除外)
    • 如果有,可以先转化为 ASCII 码
  • 相关阅读:
    memcached stats 命令
    C# 压缩文件 ICSharpCode.SharpZipLib.dll
    复选框的全选与反选
    Internet Explorer 9 已安装在此系统上
    C# AES 加密与解密
    C# List<T> 泛型
    C# DataTbale详细操作
    C# 日志系统 log4net 配置及使用
    Web.config配置文件详解
    字符串比较
  • 原文地址:https://www.cnblogs.com/mengd/p/13562332.html
Copyright © 2011-2022 走看看