springboot 配置绑定

所谓“配置绑定”就是把配置文件中的值与 JavaBean 中对应的属性进行绑
定。通常,我们会把一些配置信息(例如,数据库配置)放在配置文件
中,然后通过 Java 代码去读取该配置文件,并且把配置文件中指定的配置
封装到 JavaBean(实体类) 中。
SpringBoot 提供了以下 2 种方式进行配置绑定:
使用 @ConfigurationProperties 注解
使用 @Value 注解
@ConfigurationProperties
通过 Spring Boot 提供的 @ConfigurationProperties 注解,可以将全局配
置文件中的配置数据绑定到 JavaBean 中。

@Configuration
@ConfigurationProperties(prefix = "sb")
public class DbConfig {
String username;
String password;
Date birthday;
Map books;
Person person;
Map books2;
Person person2;
String [] hobby;
List list;
Set set ;
int [] hobby2;
List<Map> mapList;
/************省略geter/seter方法*************/
}

只有在容器中的组件,才会拥有 SpringBoot 提供的强大功能。如 果我们想要使用 @ConfigurationProperties 注解进行配置绑定, 那么首先就要保证该对 JavaBean 对象在 IoC 容器中,所以需要用 到 @Configuration 注解来添加组件到容器中。

JavaBean 上使用了注解 @ConfigurationProperties(prefix = "sb") ,它表示将这个 JavaBean 中的所有属性与配置文件中以“sb”为前 缀的配置进行绑定。

@Value
当我们只需要读取配置文件中的某一个配置时,可以通过 @Value 注解获
取。
语法:
@Value注解
 ① ${ property : default_value }
 注入的是外部配置文件对应的property
 ② #{ obj }
是SpEL表达式
可以表示常量的值
获取的map 
 做简单运算:
List<Map> mapList;
/************省略geter/seter方法*************/
}
@Value("${key}")
数据类型 成员变量;
@Value(#{100-3})
int num;

map
读取时:
数组 list set
@ConfigurationProperties注解
map
数组 list set
方式一:

prefix.数组名=val,.....

#如

pro.list=spring,myatis
方式二:
prefix.map={key:value,...}
#如
pro.books={jsp:36,html:360,spring:65}
@Value("#{${pro.books}}")
Map books;
prefix.数组名=val,.....
#如
pro.list=spring,myatis
prefix.key=value
#如
pro.books.jsp=36
prefix.数组名=val,.....
#如
pro.list=spring,myatis
prefix.数组名[下标]=val
#如
pro.list[0]=spring

@PropertySource
如果将所有的配置都集中到 application.properties 或 application.yml
中,那么这个配置文件会十分的臃肿且难以维护,因此我们通常会将与
Spring Boot 无关的配置(例如自定义配置)提取出来,写在一个单独的配
置文件中,并在对应的 JavaBean 上使用 @PropertySource 注解指向该配
置文件。
我们也可以自定义配置文件,例如新建 db.properties ,配置内容如下:
 

pro.username=admin
pro.password=123456
pro.birthday=2000/12/01
pro.age=23
pro.books={jsp:36,html:360,spring:65}
pro.hobby=23,34
pro.list=sprig,myatis
pro.set=34,45,56
@Component
@PropertySource("classpath:user.properties")
@Data
public class User {
@Value("${pro.username}")
String username;
@Value("${pro.password}")
String password;
@Value("${pro.birthday}")
Date birthday;
@Value("${pro.age}")
int age;
@Value("#{${pro.books}}")
Map books;
@Value("${pro.hobby}")
String [] hobby;
@Value("${pro.list}")
List list;
@Value("${pro.set}")
Set set;
}

注:该注解只能引用properties文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值