当前位置: 首页 > news >正文

7、SpringBoot_高级配置

一、配置高级

1.临时属性设置

1.1引出问题

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

    在这里插入图片描述

  • 解决方式

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

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进行临时日志设置
    在这里插入图片描述

2.属性加载优先级

  • 文档地址

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

  • 优先级说明

    在这里插入图片描述

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

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

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

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

      在这里插入图片描述

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

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

  • 设置主流方式步骤
    在这里插入图片描述

  • 了解内容

    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类路径下配置文件

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

    在这里插入图片描述

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

  • 类路径下config目录下配置

    在这里插入图片描述

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

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

    在这里插入图片描述

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

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

    在这里插入图片描述

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

  • 通过名称设置图示

    在这里插入图片描述

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

    在这里插入图片描述

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;
    }
    
  • 报错如下

    在这里插入图片描述

  • 宽松绑定

    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

    在这里插入图片描述

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

  • boolean 类型直接使用 true / false

http://www.lryc.cn/news/176959.html

相关文章:

  • cocos2dx查看版本号的方法
  • 某高校的毕设
  • 利用uvicorn、Starlette和pipeline将一个训练好的大模型发布成一个web服务
  • 贝赛尔曲线 - Vue3实现加入购物车抛物线效果组件
  • AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes解决方法
  • Fortinet 2023上半年全球威胁态势研究报告:勒索软件检测成下降趋势,针对性攻击持续升温
  • MySQL ——多表连接查询
  • 前沿技术 --> 待定
  • Linux定时python脚本(crontab版本)
  • 修改 Ubuntu .cache 和 pip cache 默认路径
  • 【Java SE】Lambda表达式
  • Kafka-UI
  • Unity 制作登录功能02-创建和链接数据库(SQlite)
  • 算法 岛屿数量-(递归回溯)
  • 安卓恶意应用识别(番外篇)(Python并行(多线程or多进程)执行cmd)
  • 基于大语言模型扬长避短架构服务
  • 初识网络编程
  • 轻松使用androidstudio交叉编译libredwg库
  • 【C++杂货铺】一颗具有搜索功能的二叉树
  • uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined
  • 蜂蜜配送销售商城小程序的作用是什么
  • 大数据Flink(八十四):SQL语法的DML:窗口聚合
  • 系统集成|第十八章(笔记)
  • 480万商品,如何架构商品治理平台?
  • 【C++入门指南】C如何过渡到C++?祖师爷究竟对C++做了什么?
  • 简易磁盘自动监控服务
  • 【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
  • 十六,镜面IBL--预滤波环境贴图
  • 信息安全:恶意代码防范技术原理.
  • 开源媒体浏览器Kyoo