SpringBoot屬性綁定與bean屬性校驗實現(xiàn)方法詳解
屬性綁定
屬性綁定:我們可以使用配置文件對類的屬性進行賦值綁定。
自定義類屬性綁定
我們自定義一個類,在此使用yml文件進行類屬性的綁定。
屬性綁定步驟:
1.創(chuàng)建一個類,設置字段。
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快速創(chuàng)建實體類。
@ConfigurationProperties:聲明此類使用配置文件進行屬性綁定,
并且設置使用配置文件中的哪個數(shù)據(jù)。
3.配置文件設置數(shù)據(jù)
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); } }
測試結果: 發(fā)現(xiàn)打印出來的數(shù)據(jù)就是我們在yml中設置的數(shù)據(jù)
第三方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的配置數(shù)據(jù)到控制臺看效果
@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()); } }
測試結果:
規(guī)則-松散綁定(寬松綁定)
寬松綁定是一種特性,說的是在配置文件中的綁定屬性的數(shù)據(jù)時,屬性名的書寫規(guī)定很寬松。
松散綁定的規(guī)則:忽略標點符號,將所有字母轉為小寫
特點:匹配規(guī)則很寬松。
舉例:屬性綁定,在配置文件中設置多種屬性名進行匹配。
我們配置類的ipAddress屬性,查看在配置文件中書寫屬性的多種形式。
需要設置的屬性:
配置文件中進行屬性綁定:
說明:上面的方式,均可以對屬性進行綁定,并未列出所有。
原因:忽略標點符號,將所有字母轉為小寫
如上方式有很多種,其中,官方主張”烤肉串模式”。
烤肉串模式:ip-address: 198.56.23.38
值得注意的是:
如上的寬松綁定規(guī)則僅僅限于:@ConfigurationProperties
Bean屬性校驗
對類的屬性賦值時自定義規(guī)則進行校驗。
"屬性校驗"使用步驟
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:相當于是屬性校驗的接口實現(xiàn)類坐標。
兩者關系就像jdbc和MySQL驅動相似,所以需要導入兩個坐標。
2.開啟校驗功能
在需要啟用校驗功能的類上寫注解:@Validated。
@Data @ConfigurationProperties(prefix = "servers") @Validated public class ServiceConfig { }
3.設置校驗規(guī)則
在屬性上設置校驗規(guī)則
@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就是設置的規(guī)則,其中有value和messge兩個屬性。
提供數(shù)據(jù)校驗的規(guī)則有許多,如下(查看constraints包):
4.測試
我們使用yml文件進行屬性綁定,進行屬性校驗,如果不符合條件則報錯。
到此這篇關于SpringBoot屬性綁定與bean屬性校驗實現(xiàn)方法詳解的文章就介紹到這了,更多相關SpringBoot屬性綁定內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
File的API和常用方法詳解_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了File的API和常用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05淺析Java中靜態(tài)代理和動態(tài)代理的應用與區(qū)別
代理模式在我們生活中很常見,而Java中常用的兩個的代理模式就是動態(tài)代理與靜態(tài)代理,這篇文章主要為大家介紹了二者的應用與區(qū)別,需要的可以參考下2023-08-08