7、SpringBoot_高级配置

一、配置高级

1.临时属性设置

1.1引出问题

  • 如果目标电脑上8080端口已经使用,再次使用该端口会出现端口占用问题

    7、SpringBoot_高级配置_第1张图片

  • 解决方式

    • 重新更换配置文件修改端口打包
    • 通过临时属性配置新端口
    • 更换配置文件

1.2添加临时属性配置

  • 通过临时属性修改8080端口

    java -jar 项目.jar --server.port=8081
    
  • 添加web部分使用 dbug 日志

    java -jar springboot-ssm-0.0.1-SNAPSHOT.jar --server.port=8081 --logging.level.org.springframework.web=debug
    java -jar springboot-ssm-0.0.1-SNAPSHOT.jar --server.port=8081 --logging.level.root=debug
    
  • 可以分别对rootwebhibernate进行临时日志设置
    7、SpringBoot_高级配置_第2张图片

2.属性加载优先级

  • 文档地址

    https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config

  • 优先级说明

    7、SpringBoot_高级配置_第3张图片

  • 注意:从上往下优先级越来越高

    • 开发中使用的是3,刚才使用命令行使用的是11

    • 在开发中,会遇见自己定义属性名和系统变量名一致的情况,导致自己配置的数据被覆盖

      user:
        name: sy
      
    • 实际取出来值是电脑用户名称值

      7、SpringBoot_高级配置_第4张图片

    • 以后如果你们再开发中,自己定义变量但是发现取出来的不是想要的值时,优先考虑属性优先级问题

3.开发环境使用临时属性设置

  • 设置主流方式步骤
    7、SpringBoot_高级配置_第5张图片

  • 了解内容

    public static void main(String[] args) {
        args[0] = "--server.port=9999";
        SpringApplication.run(SpringbootSsmApplication.class, args);
    }
    
  • 问题:如果需要修改的配置很多,那么使用这种手动输入的方式很容易出错,可以通过配置文件解决

4.配置文件分类

  • 类路径下配置文件
    • 开发人员使用
  • 类路径下config目录下配置文件
    • 项目经理、技术经理使用
  • 程序包所在目录中配置文件
    • 运维人员、架构师使用
  • 程序包所在目录中config目录下配置文件
    • 最高等级,技术总监
  • 应用场景
    • A 开发项目时候使用的是类路径下配置文件
    • A 开发完成之后,需要部署到测试环境,需要修改配置
    • 测试B测试出问题,A 需要去修改bug(需要把配置修改回来)
    • 测试没问题之后,A需要再次修改生产环境的配置

4.1类路径下配置文件

  • 类路径下配置文件:就是我们默认使用的配置文件,优先级是最低

    7、SpringBoot_高级配置_第6张图片

4.2类路径下config目录下配置文件

  • 类路径下config目录下配置

    7、SpringBoot_高级配置_第7张图片

4.3程序包所在目录中配置文件

  • 程序包所在目录中配置文件

    在这里插入图片描述

4.4程序包所在目录中config目录下配置文件

  • 程序包所在目录中config目录下配置文件

    7、SpringBoot_高级配置_第8张图片

4.5通过临时变量设置配置文件

  • 通过名称设置图示

    7、SpringBoot_高级配置_第9张图片

  • 通过具体路径设置具体文件

    7、SpringBoot_高级配置_第10张图片

5.@ConfigurationProperties

5.1.回顾基础使用

  • 绑定类

    @Data
    @Component
    @ConfigurationProperties(prefix = "dbconfig")
    public class DbConfig {
        private String url;
        private String username;
    }
    
  • 配置文件

    dbconfig.url=123123
    dbconfig.username=sy
    
  • 加入如下的依赖,可以解决提示问题

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
    </dependency>
    

5.2配置第三方类

  • 配置德鲁伊连接池

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.15</version>
    </dependency>
    
  • 配置三方bean

    @Bean
    @ConfigurationProperties(prefix = "druid")
    public DruidDataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }
    

6.宽松绑定/松散绑定

  • 如果你这样配置会报错

    @Component
    @ConfigurationProperties(prefix = "dbConfig")
    public class DbConfig {
        private String url;
        private String username;
    }
    
  • 报错如下

    7、SpringBoot_高级配置_第11张图片

  • 宽松绑定

    dbConfig.url=123123
    dbConfig.user_name=sy
    db-config.PASSWORD=12345223123
    db-config.home-address=bj
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "db-config")
    public class DbConfig {
        private String url;
        private String username;
        private String password;
        private String homeAddress;
    }
    
    

7.常用计量单位绑定

  • 配置时间需求

    db-config.timeout=600
    
  • 使用 Duration 表示时间

    @DurationUnit(ChronoUnit.HOURS)
    private Duration timeout;
    
  • 使用DataSize来表示空间

    @DataSizeUnit(DataUnit.MEGABYTES)
    private DataSize datasize;
    

8.检验

  • 导入依赖

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>
    
  • 检验配置如下

    @Max(value = 9999,message = "无效的配置")
    @Min(value = 80,message = "无效的配置")
    private int port;
    

9.数据类型转换

  • 之前学生出现的一个问题

    在这里插入图片描述

  • 他的密码 010101

    7、SpringBoot_高级配置_第12张图片

  • 配置文件中,可以通过引号的方式解决

  • boolean 类型直接使用 true / false

你可能感兴趣的:(spring,boot,后端,java,spring)