SpringBoot-属性绑定和bean属性校验
创始人
2024-01-20 20:29:33
0

目录

属性绑定

自定义类属性绑定

第三方bean属性匹配

规则:松散绑定(宽松绑定)

Bean属性校验


属性绑定

属性绑定:我们可以使用配置文件对类的属性进行赋值绑定。

自定义类属性绑定

我们自定义一个类,在此使用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: rootpassword: rootdriverClassName: com.mysql.cj.jdbc.Driverurl: 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.导入对应坐标

javax.validationvalidation-api
org.hibernate.validatorhibernate-validator

坐标说明

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文件进行属性绑定,进行属性校验,如果不符合条件则报错。

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...