SpringBoot中属性注入的几种方式

今天,学习一下SpringBoot中几种属性注入的方式。
首先,先来认识几个注解

  1. @Value注解
  2. @ConfigurationProperties
  3. @PropertySource
  4. @EnableConfigurationProperties

1、@Value注解

@Value注解可以加载application.properties配置文件的属性,并绑定的Bean的属性上面。
假如我们有这样一个实体类User,其中有username、age两个属性,使用下面的方式可以实现配置文件中的值与Bean的属性绑定:
User.java

@Component // 必须要将User类纳入Spring的IOC容器管理才能进行属性注入
public User {
	@Value("${user.username}") // 将配置文件中的user.username的值绑定到username属性上
	private String username;
	@Value("${user.age}")  // 将配置文件中的user.age的值绑定到age属性上
	private int age;
	//省略...
}

application.properties文件

user.username=张三
user.age=18

2、@ConfigurationProperties

@ConfigurationProperties的用法和功能与@Value类似,但是比@Vlaue使用起来会更加方便,因为它可以指定属性的前缀,就可以自动地将配置文件中和Bean中相同的属性名称进行值绑定,我们改造一下User.java,可以达到和上面使用@Value一样的效果。
User.java

@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;
    private int age;
    // 省略...
}

3、@PropertySource

@PropertySource注解可以引入其他配置文件,类似以前在xml配置方式中的

<context:property-placeholder ignore-unresolvable="true" location="classpath:user.properties"/> 

4、@EnableConfigurationProperties

@EnableConfigurationProperties在SpringBoot的自动注解配置类中使用特别广泛,此注解可以方便的将一个类纳入Spring IOC容器并进行属性绑定,不过,需要配置@ConfigurationProperties注解一起使用,我们来看一下Gson的自动配置源码:
GsonAutoConfiguration.java(Gson的自动配置类)

@EnableConfigurationProperties({GsonProperties.class})
public class GsonAutoConfiguration {
    public GsonAutoConfiguration() {
    }
    // 省略...
}

GsonProperties.java(Gson的一些相关配置属性)

@ConfigurationProperties(
    prefix = "spring.gson"
)
public class GsonProperties {
    private Boolean generateNonExecutableJson;
    private Boolean excludeFieldsWithoutExposeAnnotation;
    private Boolean serializeNulls;
    // 省略...
}

总结,通过以上注解,我们可以方便的实现外部属性与Bean的绑定。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值