SpringBoot属性绑定与bean属性校验实现方法详解
作者:CN丶1
属性绑定
属性绑定:我们可以使用配置文件对类的属性进行赋值绑定。
自定义类属性绑定
我们自定义一个类,在此使用yml文件进行类属性的绑定。
属性绑定步骤:
1.创建一个类,设置字段。
public class ServiceConfig { private int prot; private String ipAddress; private long timeOut;
2.添加注解
@Component @Data @ConfigurationProperties(prefix = "servers") public class ServiceConfig { private int prot; private String ipAddress; private long timeOut;
注解说明:
@Component:将此类加入Spring容器。
@Data:使用lombok快速创建实体类。
@ConfigurationProperties:声明此类使用配置文件进行属性绑定,
并且设置使用配置文件中的哪个数据。
3.配置文件设置数据
4.测试:在boot引导类中
@SpringBootApplication public class SpringBootDemo2Application { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(SpringBootDemo2Application.class, args); //获取自定义类 ServiceConfig bean = context.getBean(ServiceConfig.class); //打印获取的bean,查看是否成功绑定属性 System.out.println(bean); } }
测试结果: 发现打印出来的数据就是我们在yml中设置的数据
第三方bean属性匹配
说明:有时候我们的需求并不只是想要给我们自己的类进行属性绑定,还需要给第三方的bean进行属性绑定。
在此使用DruidDataSource作为第三方bean,为此bean进行属性绑定。
将Druid加入spring容器。(操作前提是导入了Druid坐标)
@Bean @ConfigurationProperties(prefix = "datasource") public DruidDataSource dataSource(){ DruidDataSource druid = new DruidDataSource(); return druid; }
yml文件中进行属性绑定
datasource:
username: root
password: root
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
测试:打印第三方bean的配置数据到控制台看效果
@SpringBootApplication public class SpringBootDemo2Application { @Bean @ConfigurationProperties(prefix = "datasource") public DruidDataSource dataSource(){ DruidDataSource druid = new DruidDataSource(); return druid; } public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(SpringBootDemo2Application.class, args); DruidDataSource bean = context.getBean(DruidDataSource.class); System.out.println(bean.getUsername()); System.out.println(bean.getPassword()); System.out.println(bean.getUrl()); System.out.println(bean.getDriverClassName()); } }
测试结果:
规则-松散绑定(宽松绑定)
宽松绑定是一种特性,说的是在配置文件中的绑定属性的数据时,属性名的书写规定很宽松。
松散绑定的规则:忽略标点符号,将所有字母转为小写
特点:匹配规则很宽松。
举例:属性绑定,在配置文件中设置多种属性名进行匹配。
我们配置类的ipAddress属性,查看在配置文件中书写属性的多种形式。
需要设置的属性:
配置文件中进行属性绑定:
说明:上面的方式,均可以对属性进行绑定,并未列出所有。
原因:忽略标点符号,将所有字母转为小写
如上方式有很多种,其中,官方主张”烤肉串模式”。
烤肉串模式:ip-address: 198.56.23.38
值得注意的是:
如上的宽松绑定规则仅仅限于:@ConfigurationProperties
Bean属性校验
对类的属性赋值时自定义规则进行校验。
"属性校验"使用步骤
1.导入对应坐标
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency>
坐标说明:
validation-api:是属性校验的接口坐标。
hibernate-validator:相当于是属性校验的接口实现类坐标。
两者关系就像jdbc和MySQL驱动相似,所以需要导入两个坐标。
2.开启校验功能
在需要启用校验功能的类上写注解:@Validated。
@Data @ConfigurationProperties(prefix = "servers") @Validated public class ServiceConfig { }
3.设置校验规则
在属性上设置校验规则
@Data @ConfigurationProperties(prefix = "servers") @Validated public class ServiceConfig { @Max(value = 8888,message = "最大值能超过8888") @Min(value = 200,message = "最小值不可小于200") private int prot; private String ipAddress; private long timeOut; }
说明:如上代码中,@Max和@Min就是设置的规则,其中有value和messge两个属性。
提供数据校验的规则有许多,如下(查看constraints包):
4.测试
我们使用yml文件进行属性绑定,进行属性校验,如果不符合条件则报错。
到此这篇关于SpringBoot属性绑定与bean属性校验实现方法详解的文章就介绍到这了,更多相关SpringBoot属性绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!