SpringBoot多环境切换及JSR303数据校验

多环境切换

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境;

多配置文件

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

例如:

  • application-test.properties 代表测试环境配置

  • application-dev.properties 代表开发环境配置

但是SpringBoot并不会直接启动这些配置文件,它默认使用application.properties主配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SRUx191d-1691570152044)(SpringBoot04:JSR303数据校验及多环境切换.assets/1595484043622.png)]

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

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

yml多环境开发

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

server:port: 8081
#选择要激活那个环境块
spring:profiles:active: test---
server:port: 8083
spring:profiles: dev #配置环境的名称---server:port: 8084
spring:profiles: test  #配置环境的名称

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!

配置文件加载位置

外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!

官方外部配置文件说明参考文档https://docs.spring.io/spring-boot/docs/2.6.5/reference/html/spring-boot-features.html#boot-features-logging-color-coded-output

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hhYtD76-1691570152045)(SpringBoot04:JSR303数据校验及多环境切换.assets/1595484511936.png)]

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:

在这里插入图片描述

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

拓展,运维小技巧

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

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

JSR303数据校验

先看看如何使用

SpringBoot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;

1、添加validation启动器

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

2、@Email添加

@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated  //数据校验
public class Person {@Email(message="邮箱格式错误") //name必须是邮箱格式private String name;
}

运行结果 :default message [不是一个合法的电子邮件地址];

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y50s8qBV-1691570152043)(SpringBoot04:JSR303数据校验及多环境切换.assets/1595480159290.png)]

使用数据校验,可以保证数据的正确性;

常见参数

@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       验证 DateCalendar 对象是否在当前时间之前  
@Future     验证 DateCalendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则.......等等
除此以外,我们还可以自定义一些数据校验规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTLn6VfX-1691570152044)(SpringBoot04:JSR303数据校验及多环境切换.assets/1595480813196.png)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【历史上的今天】8 月 10 日:“龙芯”点亮操作系统;谷歌宣布拆分;计算机先驱诞生日

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 8 月 10 日&#xff0c;在 2010 年 5 月&#xff0c;苹果公司市值超过微软&#xff0c;成为全球市值最高的 IT 企业&#xff1b;在此过程中&#xff0c;苹果公…

JavaScript 实现计算下周几是几月几号

一&#xff1a;解法流程&#xff1a; &#xff08;按照获取下周2的例子来&#xff09; 1.获取当前时间 2.获取今天的0点时间 3.根据一周7天 减去当前周几 加上 要的下周2 计算出下周2距离今天的天数 4.一天86400000毫秒 计算出距离天数的毫秒数 加上今天0点的毫秒 获得 下…

测试平台开发:(18)自动化测试脚本工具化

上一篇:测试平台开发:(17)新增测试用例功能示例_新增用户信息测试用例_要开朗的spookypop的博客-CSDN博客 先看看我们最熟悉不过的自动化测试脚本,用python + selenium编写: service = ChromeService(executable_path=ChromeDriverManager().install()) driver = webdr…

云安全攻防(八)之 Docker Remote API 未授权访问逃逸

Docker Remote API 未授权访问逃逸 基础知识 Docker Remote API 是一个取代远程命令行界面&#xff08;rcli&#xff09;的REST API&#xff0c;其默认绑定2375端口&#xff0c;如管理员对其配置不当可导致未授权访问漏洞。攻击者利用 docker client 或者 http 直接请求就可以…

sql中判断日期是否是同一天

sql中判断日期是否是同一天的sql sql: select id,product_id,seckill_price,stock_count,time,intergral,start_date from t_seckill_product where to_days(start_date) to_days(now()) to_days函数&#xff1a; 使用to_days(start_date) to_days(now())的方式是一种常见的…

YOLOX:2021年超越YOLO系列

论文链接如下&#xff1a; ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4558468783967051777eId740712499546066944 作者信息如下&#xff1a; 图1&#xff1a;YOLOX和其他最先进的物体探测器在移动设备上的精确模型的速度-精度权衡(上)和尺寸-精度曲线(下)。 …

spring AOP两种动态代理

本文开始 1.什么是动态代理&#xff1f; 动态代理&#xff1a;本来是通过直接访问目标对象的&#xff0c;但是找个代理对象替你进行访问目标对象&#xff0c;这就是动态代理过程&#xff1b; 例如&#xff1a;买饭作为目标对象&#xff0c;自己不想亲自跑腿&#xff0c;就点个…

C语言基础算法题

1、计算并输出1到100之间所有偶数之和&#xff1b; #include <stdio.h>int main(){int sum 0;for(int i 2; i < 100; i 2) {sum i;}printf("sum :%d\n", sum);return 0; } 2、招数数组中的最大值和最小值&#xff1b; #include <stdio.h>int m…

深入解析Nmap:掌握所有参数的网络扫描之道

Nmap&#xff08;Network Mapper&#xff09;作为一款功能强大的开源网络扫描工具&#xff0c;不仅广泛应用于网络安全领域&#xff0c;还在系统管理、网络调优等方面发挥着关键作用。本篇博客将深入探讨Nmap的各种参数&#xff0c;逐一介绍其用途、特点以及实际应用&#xff0…

基于颜色进行轮廓分割,基于opencv和python

1. 阈值调整&#xff0c;交互式的阈值调整&#xff0c;确定上限和下限&#xff1a; import cv2 as cv import numpy as npdef Tcallback(event):H cv.getTrackbarPos(H, show_pic)S cv.getTrackbarPos(S, show_pic)V cv.getTrackbarPos(V, show_pic)H0 cv.getTrackbarPos(…

2023企业数智化转型的正确打开方式是什么?他这样说(二)

哈喽~又见面了大家&#xff01;上期我们说到了数据在数智化转型中的重要性&#xff0c;戳这里↓↓↓&#xff0c;一键直达 2023企业数智化转型的正确打开方式是什么&#xff1f;他这样说&#xff08;一&#xff09; 这期我们将从监控的角度进一步跟大家分享数智化转型&#x…

Java # Spring(2)

一、Spring事物 一、分类 编程式事物&#xff1a;代码中硬编码&#xff08;不推荐使用&#xff09; 声明式事物&#xff1a;配置文件中配置&#xff08;推荐使用&#xff09; 分类&#xff1a; 基于xml的声明式事物基于注解的声明式事物 二、隔离级别 ISOLATION_DEFAULT&…

Kubernetes集群部署

环境 > 192.168.50.53 k8s-master > 192.168.50.51 k8s-node1 > 192.168.50.50 k8s-node2 必须不能少于两核两G 所有主机共同操作 主机初始化配置 所有主机配置禁用防火墙和selinux [rootserver ~]# setenforce 0 [rootserver ~]# iptables -F [rootserver ~]…

Android java.lang.UnsatisfiedLinkError: No implementation found

例如&#xff0c;该项目的如下报错&#xff1a; java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.PeerConnectionFactory.nativeInitializeAndroidGlobals() (tried Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals and…

LeetCode150道面试经典题--罗马数字转整数(简单)

目录 1.题目 2.示例 3.思路 4.案例代码&#xff08;Java&#xff09; 1.题目 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L …

java Spring Boot yml多环境配置

我们项目 线上和线下 环境配置不是特别一样 例如 运行的URL 数据库地址 数据库的账号密码 这些经常是不一样的 如果每次上线钱改 也不是特别方便 甚至可能忘记 那么 进入我们代码中 所谓的多环境 就是在不同的环境下配置不同的值 终端还是在application配置文件中 多环境的话…

一、Kubernetes介绍与集群架构

Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose&#xff0c;您可以使用 YAML 文件来配置应用程序的服务。…

电源控制--对数与db分贝

在控制理论中&#xff0c;"db"通常表示分贝&#xff08;decibel&#xff09;的缩写。分贝是一种用于度量信号强度、增益或衰减的单位。 在控制系统中&#xff0c;分贝常用于描述信号的增益或衰减。通常&#xff0c;增益以正数的分贝值表示&#xff0c;而衰减以负数的…

分布式定时任务框架Quartz总结和实践(1)

一、概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个&#xff0c;百个&#xff0c;甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或…

营收、净利同比微增,喜临门品牌升级“临门一脚”?

8月8日晚&#xff0c;喜临门发布2023上半年业绩报告。根据财报&#xff0c;2023年上半年&#xff0c;喜临门营业收入约38.05亿元&#xff0c;同比增加5.53%&#xff1b;归属于上市公司股东的净利润约2.22亿元&#xff0c;同比增加1.2%。 如果仅从这份财报看&#xff0c;喜临门…