57. Spring 自定义properties升级篇

本文详细介绍了如何在SpringBoot中使用自定义属性,包括在application.properties中添加单个和多个属性,配置数组,松散绑定,参数引用,随机数,使用自定义配置文件,@Bean的注入,自定义结构以及参数校验。通过@ConfigurationProperties和@Value注解实现属性的优雅注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法:

25.Spring Boot使用自定义的properties【从零开始学Spring Boot】

51.spring boot属性文件之多环境配置【从零开始学SpringBoot】

但是在实际开发过程中有更复杂的需求,我们在对properties进一步的升华。在本篇博客中您将会学到如下知识(这节中有对之前的知识的温故,对之前的升华):

(1) 在application.properties文件中添加自定义属性(单个属性使用);

(2) 在application.properties文件中添加自定义属性(多个属性使用);

(3) 配置数组注入;

(4) 松散的绑定;

(5) 参数的引用;

(6) 随机数;

(7) 使用自定义的配置文件company.properties怎么操作;

(8) 在方法上使用@Bean的时候如何进行注入;

(9) 自定义结构;

(10) 校验;

好了,本文大纲就这么多,那么我一起来看看每个知识点都应该怎么去操作吧。

(1) 在application.properties文件中添加自定义属性(单个属性使用);

在这里我们新建一个maven java project进行测试,取名为:spring-boot-hello4。

对pom.xml基本的spring boot 配置,主要用到的一个核心依赖是:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

官方中对于spring-boot-configuration-processor是这么说明的:

通过使用spring-boot-configuration-processorjar, 你可以从被@ConfigurationProperties注解的节点轻松的产生自己的配置元数据文件。该jar包含一个在你的项目编译时会被调用的Java注解处理器。想要使用该处理器,你只需简单添加spring-boot-configuration-processor依赖。

好了,官方已经说得很清楚了,这个依赖主要可以在代码中轻松的使用@ConfigurationProperties注解注入属性文件配置的属性值。

单属性注入的比较简单,只需要在application.properties加入配置,如下:

#key = value的形式;

filePathLocation = d:/data/files

那么在对应需要使用的类中使用如下代码进行引入:

@Value("${filePathLocation}")

privateString filePathLocation;

这里使用@Value注解就可以为我们的变量filePathLocation设置上我们在application.properties文件中设置的key值了。

在实际开发中可能我们期望的是,如果没有设置key的话,设置一个默认值,使用如下代码即可实现(以上@Value的使用方式如果在没有设置key的话是会抛出异常的):

@Value("${filePathLocation1:d:/data/myfiles}")

privateString filePathLocation1;

这里的filePathLocation1我们并没有在application.properties文件中进行指定,但是查看打印信息是可以看到我们设置的默认值的,所以设置默认值的方式就是:

@Value(“${key:defaultVlaue}”)的形式进行设置。

(2) 在application.properties文件中添加自定义属性(多个属性使用);

多属性的设置也可以属性单属性的注入方式,但是这种方式不好,那么怎么比较优雅的注入多个属性值进行使用了。假设我们在application.properties定义了如下的属性:

#公司简称;

com.kfit.company.name=知远信科

#公司位置;

com.kfit.company.location=北京海淀区

#公司联系方式;

com.kfit.company.mobile= 110****1195

#公司员工人数;

com.kfit.company.employCount= 100

接下来我们定义一个ComapnyProperties类进行设置这些参数。

package com.kfit.properties;

importorg.springframework.boot.context.properties.ConfigurationProperties;

importorg.springframework.stereotype.Component;

//prefix设置key的前缀;

@ConfigurationProperties(prefix ="com.kfit.company")

@Component

publicclass CompanyProperties {

private Stringname;

private Stringlocation;

private Stringmobile;

privateintemployCount;

public StringgetName() {

returnname;

}

publicvoid setName(Stringname) {

this.name =name;

}

public StringgetLocation() {

returnlocation;

}

publicvoidsetLocation(Stringlocation) {

this.location =location;

}

public StringgetMobile() {

returnmobile;

}

publicvoidsetMobile(Stringmobile) {

this.mobile =mobile;

}

publicintgetEmployCount() {

returnemployCount;

}

publicvoid setEmployCount(intemployCount) {

this.employCount =employCount;

}

@Override

public StringtoString() {

return"CompanyProperties[name=" +name + ", location=" +location + ", mobile=" +mobile + ",employCount="

+employCount +"]";

}

}

那么之后我们就可以使用如下代码注入到要使用的这些属性的类进行使用了:

@Autowired

privateCompanyProperties companyProperties;

这里需要注意下:

第一:我们使用了@ConfigurationProperties(prefix= "com.kfit.company")快速注入我们的属性,这里prefix是key的公共部分。

第二:这里我们使用@Component注解为spring 管理的类,那么在别的类才可以进行注入使用。

第三:在之前的文章中我们并没有使用@Component进行注册为spring 容器中,而是使用了@EnableConfigurationProperties({WiselySettings.class}) 这样的方式进行注入的。这两种方式都可以。

。。。。。。。。。。。。。。。。。

版权原因,完整文章,请参考如下:57. Spring 自定义properties升级篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值