【WEEK9】 【DAY3】JSR303数据校验及多环境切换【中文版】

2024.4.24 Wednesday

目录

  • 4.JSR303数据校验及多环境切换
    • 4.1.JSR303数据校验(了解即可)
      • 4.1.1.修改Person.java
      • 4.1.2.修改pom.xml(添加依赖)
      • 4.1.3.运行Springboot02ConfigApplicationTests.java进行测试
      • 4.1.4.使用数据校验(后端),可以保证数据的正确性
      • 4.1.5.常见参数
    • 4.2.多环境切换
      • 4.2.1.将本项目冗余文件删除
      • 4.2.2.多配置文件
        • 例如
      • 4.2.3.Yaml的多文档块
        • 4.2.3.1.和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,更加方便了
        • 4.2.3.2.注意:如果yml和properties同时都配置了端口,并且没有激活其他环境,默认会使用properties配置文件的!(删除.properties文件)
      • 4.2.4.配置文件加载位置
        • 4.2.4.1.外部加载配置文件(添加application.yaml文件的有效地址)的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!
        • 4.2.4.2.springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:
      • 4.2.5.拓展,运维小技巧

4.JSR303数据校验及多环境切换

4.1.JSR303数据校验(了解即可)

4.1.1.修改Person.java

添加两个依赖(@Validated和@Email)

package com.p8.springboot02config.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Component  //注册bean
@ConfigurationProperties(prefix = "person")
@Validated  //数据校验

public class Person {
    //这里没有@Email注解提示的和@Email注解报错的去添加一下hibernate-validator依赖
    @Email()    //在括号内书写message = "格式错误"则报错时的提示信息会变更为"格式错误"
    private String name;    //提示,可以使用 shift + f6 实现所有的名称一起改
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    ...
}

4.1.2.修改pom.xml(添加依赖)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

4.1.3.运行Springboot02ConfigApplicationTests.java进行测试

在这里插入图片描述
在这里插入图片描述

4.1.4.使用数据校验(后端),可以保证数据的正确性

4.1.5.常见参数

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.

Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false

长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.

日期检查
@Past       验证 Date 和 Calendar 对象是否在当前时间之前  
@Future     验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合**正则表达式**的规则

…等等
除此以外,我们还可以自定义一些数据校验规则
在这里插入图片描述

4.2.多环境切换

4.2.1.将本项目冗余文件删除

如下:
在这里插入图片描述
清空application.yaml和Springboot02ConfigApplicationTests.java文件内容
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境。

4.2.2.多配置文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本。

例如

(创建: application.properties, application-test.properties, application-dev.properties)
在这里插入图片描述

application-test.properties代表测试环境配置
server.port=8081
application-dev.properties代表开发环境配置
server.port=8082

但是Springboot并不会直接启动这些配置文件,它默认使用application. properties主配置文件
在这里插入图片描述

->我们需要通过一个配置来选择需要激活的环境:

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev

在这里插入图片描述

如果把dev更改成test,则运行application-test.properties
在这里插入图片描述

4.2.3.Yaml的多文档块

4.2.3.1.和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,更加方便了

新建application.yaml
在这里插入图片描述

server:
  port: 8081  #默认
#选择要激活那个环境块
spring:
  profiles:
    active: prod

---
server:
  port: 8083
spring:
  profiles: dev #配置环境的名称


---

server:
  port: 8084
spring:
  profiles: prod  #配置环境的名称
4.2.3.2.注意:如果yml和properties同时都配置了端口,并且没有激活其他环境,默认会使用properties配置文件的!(删除.properties文件)

在这里插入图片描述

4.2.4.配置文件加载位置

4.2.4.1.外部加载配置文件(添加application.yaml文件的有效地址)的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!

https://docs.spring.io/spring-boot/docs/2.7.13/reference/htmlsingle/#features.external-config
在这里插入图片描述
故优先级最高的是下图中红框部分的内容
在这里插入图片描述
新建文件夹后需要修改文件夹类型
在这里插入图片描述

4.2.4.2.springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:
  • 优先级1:项目路径下的config文件夹配置文件(src/main/resources/config/application.yaml)
#src/main/resources/config/application.yaml
server:
  port: 8081

在这里插入图片描述

  • 优先级2:项目路径下配置文件(src/main/resources/application.yaml)
删除上一个优先级的文件后运行的就是这个了,后面的操作也是相同(删除配置文件后要刷新一下maven)
#src/main/resources/application.yaml
server:
  port: 8082

在这里插入图片描述

  • 优先级3:资源路径下的config文件夹配置文件(config/application.yaml)
#config/application.yaml
server:
  port: 8083

在这里插入图片描述

  • 优先级4:资源路径下配置文件(application.yaml)
#application.yaml
server:
  port: 8084

在这里插入图片描述
这里可能无法自动识别application文件(显示红色的yml图标,如:
在这里插入图片描述
),如何修改成绿色豌豆射手状?
修改Project Settings->Modules->找到该项目->修改成resources类型
在这里插入图片描述
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置。

4.2.5.拓展,运维小技巧

指定位置加载配置文件
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;这种情况,一般是后期运维做的多,相同配置,外部指定的配置文件优先级最高

java -jar spring-boot-config.jar --spring.config.location=F:/application.properties

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/571968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript系列------2

1. JS 数据类型&#xff1a; 基本数据类型&#xff1a;number数字型,string字符串型,boolean布尔型,undefined未定义型,null空类型 引用数据类型&#xff1a;object对象 js 是弱数据类型的语言&#xff0c;只有当我们赋值了才知道是什么数据类型。 声明一个变量未赋值就是 un…

智慧校园:大数据助力校情分析

随着信息技术的快速发展&#xff0c;数据信息资源以井喷的姿态涌现。数据信息的大量涌现给人们带来丰富的数据信息资源&#xff0c;但面对海量的信息资源时&#xff0c;加大了人们对有效信息资源获取的难度&#xff0c;数据挖掘技术正是这一背景下的产物&#xff0c;基于数据挖…

【安卓13】解决带GMS编译报super分区空间不足错误

1、错误信息 2、解决方案 不同供应商修改分区大小的文件路径不一样&#xff0c;但是万变不离其宗&#xff0c;根据报错信息全局搜索关键词BOARD_SUPER_PARTITION_SIZE 这里以RK供应商和AML供应商修改为例&#xff1a; &#xff08;1&#xff09;RK改法&#xff1a; 根目录下…

2024深圳杯数学建模竞赛D题(东三省数学建模竞赛D题):建立非均质音板振动模型与参数识别模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓&#xff08;浏览器打开&#xff09; https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛D题&#xff08;东三省数学建模竞赛D题&#xff0…

构建高效智能的理赔业务系统:保险科技的未来

随着保险行业的发展和科技的不断进步&#xff0c;理赔业务作为保险服务的重要环节&#xff0c;也在不断演进和改进。传统的理赔流程可能存在效率低下、信息不透明等问题&#xff0c;而现代化的理赔业务系统则能够通过数字化、智能化等手段提升理赔服务的质量和效率&#xff0c;…

【机器学习】朴素贝叶斯解决实际问题

之前写过这样一道题&#xff1a; 现在换成使用朴素贝叶斯解决这个问题 首先先了解一下朴素贝叶斯 这是之前课本里的笔记记录&#xff1a; 【机器学习笔记】朴素贝叶斯&#xff08;从先验分布到后验分布&#xff09;-CSDN博客 简单的讲解一下这道题需要的知识点 朴素贝叶斯是…

【ensp】网关冗余vrrp实验

备战中级网络工程师 目录 vrrp&#xff08;虚拟路由冗余技术&#xff09; 为什么会出现vrrp&#xff1f; 两个角色 选举流程 基本原理 VRRP 的两个定时器 VRRP 的主备切换 主备切换的条件 VRRP 主备回切 认证方式 冗余路由器 冗余核心交换机 vrrp&#xff08;虚拟路…

【04-提升模型性能:集成学习与超参数优化】

文章目录 前言集成学习BaggingBoosting超参数优化随机搜索贝叶斯优化总结前言 在前几篇博文中,我们已经介绍了一些机器学习的基础知识、Scikit-learn的核心工具与技巧,以及如何评估模型性能。本篇博文将重点讲解两个可以显著提升机器学习模型性能的高级策略:集成学习和超参数…

Github 2024-04-25Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Vue项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revised” Lic…

基于spark进行数据分析的心力衰竭可视化大屏项目

基于spark进行数据分析的心力衰竭可视化大屏项目 项目背景 在当今的医疗领域&#xff0c;数据驱动的决策变得日益重要。心力衰竭作为常见的心血管疾病&#xff0c;其临床数据的分析对于改善患者治疗结果至关重要。本文将介绍如何利用Apache Spark进行大规模心力衰竭临床数据的…

浅谈免杀下的持久化

文章目录 前记注册表计划任务COM劫持后记reference 前记 实战中持久化的手段常用的就是加服务、添改注册表、加计划任务、劫持等&#xff0c;这里探索c/c下的维权免杀 注册表 用户级 \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run \HKEY_CURRENT_USER…

正则表达式.java

正则表达式的作用&#xff1a; ①可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性&#x1f9f8; &#x1f9e9;[]:只能是括号里的字符 &#x1f9e9;[^]&#xff1a;除了括号里的字符 &#x1f9e9;[- -]:表示两段范围&#xff0c;满足其一即可 &a…

Linux系统内存持续飙高,如何排查

若一台服务器内存使用率持续处于高峰值&#xff0c;可能会导致响应慢&#xff08;如&#xff1a;ssh操作卡顿、用户访问失败或超时等&#xff09; 1.查看系统内存使用情况 free -m 2.查看哪些进程内存占用比较高 top 或htop 观察进程PID和命令确认是哪一个进程占用内存较高 …

Mogdb 5.0新特性:SQL PATCH绑定执行计划

前言 熟悉Oracle的dba都知道&#xff0c;生产系统出现性能问题时&#xff0c;往往是SQL走错了执行计划&#xff0c;紧急情况下&#xff0c;无法及时修改应用代码&#xff0c;dba可以采用多种方式针对于某类SQL进行执行计划绑定&#xff0c;比如SQL Profile、SPM、SQL Plan Base…

【prometheus】监控MySQL并实现可视化

目录 一、概述 1.1下载解压mysqld_exporter 1.2创建MySQL授权用户 1.3配置my.cnf 1.4启动mysqld_exporter 1.5prometheus配置修改 二、Grafana展示 【Prometheus】概念和工作原理介绍_prometheus工作原理 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集…

Python | Leetcode Python题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution:def rotate(self, matrix: List[List[int]]) -> None:n len(matrix)# 水平翻转for i in range(n // 2):for j in range(n):matrix[i][j], matrix[n - i - 1][j] matrix[n - i - 1][j], matrix[i][j]# 主对角线翻转for …

验证二叉搜索树 - LeetCode 热题 43

大家好&#xff01;我是曾续缘&#x1f618; 今天是《LeetCode 热题 100》系列 发车第 43 天 二叉树第 8 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜…

【Linux】什么是yum?--linux中的软件包管理器详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

UML——类图详解

目录 1. 前言 2. 类图概述 3. 类图表示法 3.1 类的表示方式 3.2 类与类之间关系的表示方式 (1)继承(泛化)关系 (2)实现关系 (3)依赖关系 (4)一般关联关系 (5)聚合关系 (6)组合关系 1. 前言 UML全称(Unified Modeling Language)&#xff0c;译为统一建模语言&#x…

FRPC+PHP+MYSQL+APACHE2=个人网站

应用背景有公网需求,但是又不想去买又贵又低配置的服务器,然后方案就应运而生 frp/README_zh.md at dev fatedier/frp (github.com) 在这里, FRPC作为内网穿透服务, PHPMYSQLAPACHE2,作为网站搭建,具体细节不细讲, 但是在我的/var/www/html下面 linaroHinlink:/var/www/h…
最新文章