springboot如何读取自定义属性
很多时候,我们开发当中,需要通过配置自己的属性信息来满足不同环境下的应用部署,因此需要springboot能够读取我们自定义的属性,常用的读取自定义属性有@Value和@ConfigurationProperties,下面分别做简单的介绍
1、@Value
文章图片
可以看到点击进去源码,表明当前注解,可以使用在属性、方法或者构造方法上,支持SPEL表达式和占位符注解方式,此标签通常是单个配置加载的数据
例如在配置文件中,配置了name和age两个属性
lixl:person:name: lixlage: 20
我们在代码中的属性上,直接注解/** * @author lixl * @description * @date 2022/2/15 */@Componentpublic class Person {@Value("${lixl.person.name}")private String name; @Value("${lixl.person.age}")private String age; @Overridepublic String toString() {return "name:"+this.name+"; age:"+this.age; }public String getAge() {return age; }public void setAge(String age) {this.age = age; }public String getName() {return name; }public void setName(String name) {this.name = name; }}
可以看到,正常打印
文章图片
修改代码,将其注解在方法上,运行main方法,依然可以使用
@Value("${lixl.person.name}")public void setName(String name) {this.name = name; }
再次修改代码,将其注解在构造方法的参数上,依然能够进行注入
public Person(@Value("${lixl.person.name}")String name, @Value("${lixl.person.age}")String age) {this.name = name; this.age = age; }
另外,如果我们需要给定@Value默认值,也是可以的,例如我们删除了name字段,同时在@Value中增加默认值
// 默认是通过 : + 默认值 给定 public Person(@Value("${lixl.person.name:张三}")String name, @Value("${lixl.person.age}")String age) {this.name = name; this.age = age; }
文章图片
运行结果,也是正常的
【springboot如何读取自定义属性】我们再来看看Spel表达式
@Value("#{'男'}") // 增加性别字段private String gender; // 修改toString方法打印性别 public String toString() {return "name:"+this.name+"; age:"+this.age+"; gender:"+this.gender; }
文章图片
运行结果正常通过,还有其他很多Spel表达,此处就不完全列举了
比如我们在配置文件中指定了属性name=‘java’ 在需要使用的组件中,设定@Value("${name}") 注解在相应的字段上,springboot就会自动加载。当然,@Value还可以使用Spel表达是,注入值使用@Value("#{Spel}").
2、@ConfigurationProperties 可以对配置文件中,某一类前缀开头的属性整体进行注入,例如:
配置文件中,有如下配置
test.name='lixl'test.age='age'
配置类需要按照一下方式编写
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component // 首先本身要是springboot容器中的组件@ConfigurationProperties(prefix = "test") // 指定前缀public class ConfigTest {private String name; private String age; public String getName() {return name; }public void setName(String name) {this.name = name; }public String getAge() {return age; }public void setAge(String age) {this.age = age; }}
目前都是用到的springboot默认的配置文件,我们也可以自己指定配置文件
使用@PropertySource(“classpath:xxx.properties”),进行加载配置文件
以上就是springboot如何读取自定义属性的详细内容,更多关于springboot读取自定义属性的资料请关注脚本之家其它相关文章!
推荐阅读
- Springboot循环依赖实践纪实
- java如何从不规则的字符串中截取出日期
- springboot中使用jpa下hibernate的ddl-auto方式
- 浅谈如何保证Mysql主从一致
- SpringBoot集成EasyExcel的步骤
- JavaScript常见数组方法之如何转置矩阵
- Google|chrome如何手动同步()
- 编程工具使用|如何用浏览器查看cookie(safari和chrome)
- css|如何在Chrome浏览器中运行Selenium()
- 如何写好 Java 业务代码(这也是有很多规范的..)