配置属性校验

自定义配置文件时,可以使用@Validated注解对注入的值进行一些简单的 校验,示例代码

@Validated
@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
@Email
private String mail;
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
}

@Email 注解会对mail字段的注入值进行检验,如果注入的不是一个合法的 邮件地址则会抛出异常。 其它常见注解:

@AssertFalse 校验false
@AssertTrue 校验true
@DecimalMax(value=,inclusive=) 小于等于value,inclusive=true,
是小于等于
@DecimalMin(value=,inclusive=) 与上类似
@Max(value=) 小于等于value
@Min(value=) 大于等于value
@NotNull 检查Null
@Past 检查日期
@Pattern(regex=,flag=) 正则
@Size(min=, max=) 字符串,集合,map限制大小
@Validate 对po实体类进行校验
上述的这些注解位于javax.validation.constraints包下, SpringBoot 2.3.0
以后maven引用:

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

注: 属性校验只适用于批量注解
@Value 与 @ConfigurationProperties
对比
@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值
并绑定到 JavaBean 中,但两者存在以下不同。
1. 使用位置不同
@ConfigurationProperties:标注在 JavaBean 的类名上;
@Value:标注在 JavaBean 的属性上。
2. 功能不同
@ConfigurationProperties:用于批量绑定配置文件中的配置;
@Value:只能一个一个的指定需要绑定的配置。
3. 松散绑定支持不同
@ConfigurationProperties:支持松散绑定(松散语法),例如实体类
Person 中有一个属性为 firstName,那么配置文件中的属性名支持以下写
法:
person.firstName
person.first-name
person.first_name
PERSON_FIRST_NAME
@Vaule:不支持松散绑定。
4. SpEL 支持不同
@ConfigurationProperties:不支持 SpEL 表达式;
@Value:支持 SpEL 表达式。
5. 复杂类型封装
@ConfigurationProperties:支持所有类型数据的封装,例如 Map、
List、Set、以及对象等;
@Value:支持基本数据类型的封装,例如字符串、布尔值、整数等类
型, 对集合Map list set配置有要求
6.属性校验
@Value不支持属性校验
@ConfigurationProperties 支持属性校验
7. 应用场景不同
@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣
之分,它们只是适合的应用场景不同而已。
若只是获取配置文件中的某项值,则推荐使用 @Value 注解;
若专门编写了一个 JavaBean 来和配置文件进行映射,则建议使用
@ConfigurationProperties 注解。
我们在选用时,根据实际应用场景选择合适的注解能达到事半功倍的效
果。
导入配置
默认情况下,Spring Boot 中是不包含任何的 Spring 配置文件的,即使我
们手动添加 Spring 配置文件到项目中,也不会被识别。
 Spring Boot提倡基于Java的配置。尽管你可以使用XML源,不过还是建议
你使用@Configuration类作为主要配置源。通常定义了main方法的类也是
使用@Configuration注解的一个很好的替补。
使用 @ImportResource 注解加载 Spring 配置文件
@ImportResource 导入 Spring 配置文

在主启动类上使用 @ImportResource 注解可以导入一个或多个 Spring 配
置文件,并使其中的内容生效。
 1、在resources下创建beans.xml文件,如下
 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://www.springframework.org/schema/
beans http://www.springframework.org/schema/beans/springbeans.xsd">
</beans>

2、创建业务测试类 接口 OrderService

public interface OrderService {
public void test();
}
public class OrderServiceImpl implements OrderService{
@Override
public void test() {
System.out.println("xml配置获取类的实例");
}
}

3、在beans.xml中增加配置

<bean id="orderService" class="com.by.OrderServiceImpl"/>


4、引入xml文件

@SpringBootApplication
@ImportResource(value = "classpath:beans.xml")


5、测试
 注入OrderService

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值