springboot如何读取自定义属性

网友投稿 628 2022-10-30

springboot如何读取自定义属性

springboot如何读取自定义属性

很多时候,我们开发当中,需要通过配置自己的属性信息来满足不同环境下的应用部署,因此需要springboot能够读取我们自定义的属性,常用的读取自定义属性有@Value和@ConfigurationProperties,下面分别做简单的介绍1、@Value

可以看到点击进去源码,表明当前注解,可以使用在属性、方法或者构造方法上,支持SPEL表达式和占位符注解方式,此标签通常是单个配置加载的数据例如在配置文件中,配置了name和age两个属性

lixl:

person:

name: lixl

age: 20

我们在代码中的属性上,直接注解

/**

* @author lixl

* @description

* @date 2022/2/15

*/

@Component

public class Person {

@Value("${lixl.person.name}")

private StringtbipSy name;

@Value("${lixl.person.age}")

private String age;

@Override

public 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;

}

运行结果,也是正常的

我们再来看看Spel表达式

@Value("#{'男'}") // 增加性别字段

private String gender;

// 修改toString方法打印性别

public String toString() {

return "name:"+this.name+";age:"+this.age+";gender:"+this.gender;

}

运行结果正常通过,还有其他很多Spel表达,此处就不完全列举了比如我们在配置文件中指定了属性name=‘java’ 在需要使用的组件中,设定@Value(&qhttp://uot;${name}")tbipSy 注解在相应的字段上,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 // 首http://先本身要是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读取自定义属性的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一种基于编译期注解的Android网络请求框架
下一篇:Go URL
相关文章

 发表评论

暂时没有评论,来抢沙发吧~