SpringBoot——属性值注入的方式

1、@ConfigurationProperties和@Value:@ConfigurationProperties默认从全局配置文件中获取值

 @ConfigurationProperties@Value
功能批量注入配置文件中的属性值一个个的注入值
松散绑定支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

松散绑定:驼峰式、下划线(_)、短横线(-)均可注入

数据校验示例:@Validated注解表示需要进行数据校验,@Email表示属性值必须是邮件格式

@Component
@Validated
@ConfigurationProperties(prefix = "person")
public class Person {

    @Email
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}

复杂类型封装:对象、map、数组

2、@PropertySource和@ImportResource

①@PropertySource:加载指定配置文件,可以在SpringBoot默认的两个全局配置文件之外自定义属性配置文件

@Component
@PropertySource(value = {"classpath:person.properties"})
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}

@ImportResource:引入Spring的xml配置文件,SpringBoot支持使用beans.xml配置文件,但不推荐使用

@ImportResource(value = {"classpath:beans.xml"})
@SpringBootApplication
public class SpringBootHelloquickApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootHelloquickApplication.class, args);
    }
}

@ImportResource注解须使用在有@Configuration注解的类上(@SpringBootApplication继承自@Configuration)

beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

SpringBoot推荐使用@Configuration注解的配置类给容器中添加组件,SpringBoot会自动将注解有@Configuration的类视为容器配置类,并将类中使用@Bean注解的方法的视为bean的获取方法,@Bean注解的方法也可以写在@SpringBootApplication注解的主程序类中:

@Configuration
public class MyConfig {
    @Bean
    public Dog dog(){
        return new Dog();
    }
}

3、配置文件占位符

①配置文件中使用随机数:${random.value}、${random.int}、${random.long}、${random.int(10)}、${random.int[1024,65536]}

person.age=${random.value}
person.dos.age=${random.uuid}

②配置文件中获取已有的配置,若没有可以指定默认值

person.age=${random.value}
person.dos.age=${person.age:2}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值