栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot——4yaml使用,JSR303检验,多环境配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot——4yaml使用,JSR303检验,多环境配置

使用

SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
语法结构 :key:空格 value

server:
  prot: 8080

“ ” 双引号,转义字符串还是有转义作用
‘’ 单引号,特殊字符最终会变成和普通字符一样输出

对象、Map(键值对)

#对象、Map格式
k: 
    v1:
    v2:

//行内写法
student: {name: qinjiang,age: 3}

数组( List、set )

pets:
 - cat
 - dog
 - pig
yaml注入配置文件

1.在springboot项目中的resources目录下新建一个文件 application.yml
2.编写一个实体类
3.原来是使用@Value给bean注入属性值的!
现在,

@ConfigurationProperties(prefix = "person")

application.yml

person:
  name: qinjiang
  age: 3
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 旺财
    age: 1

4.IDEA 提示,springboot配置注解处理器没有找到


  org.springframework.boot
  spring-boot-configuration-processor
  true

5.测试

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    Person person; //将person自动注入进来

    @Test
    public void contextLoads() {
        System.out.println(person); //打印person信息
    }

}
对比

对比properties配置

user.properties

user1.name=kuangshen
user1.age=18
user1.sex=男

在User类上使用@Value来进行注入

@Component //注册bean
@PropertySource(value = "classpath:user.properties")
public class User {
    //直接使用@value
    @Value("${user.name}") //从配置文件中取值
    private String name;
    @Value("#{9*2}")  // #{SPEL} Spring表达式
    private int age;
    @Value("男")  // 字面量
    private String sex;
}

测试类

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    User user;

    @Test
    public void contextLoads() {
        System.out.println(user);
    }

}


1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加

2、松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。

3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性

4、复杂类型封装,yml中可以封装对象 , 使用value就不支持

JSR303数据校验

实体类的注解
@Validated

@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 对象是否符合正则表达式的规则

.......等等
除此以外,我们还可以自定义一些数据校验规则

总结,可以点入注解中看,看它的包下面有哪些注解,一通全通哦

多环境配置 配置文件加载位置


配置位置文件优先级为以上顺序

多配置文件

文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本

例如:

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

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

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

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

spring.profiles.active=dev

spring:
  profiles:
    active: pro
yaml的多文档块

相当于properties的多个配置文件

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

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


---

server:
  port: 8084
spring:
  profiles: prod  #配置环境的名称
拓展,运维

还可以通过spring.config.location来改变默认的配置文件位置
java -jar spring-boot-config.jar --spring.config.location=F:/application.properties
相同配置,外部指定的配置文件优先级最高

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号