Spring Boot相关:@ConfigurationProperties&@Value读取配置文件的对比

对比点@ConfigurationProperties@Value
底层框架Spring BootSpring
功能批量注入配置文件中的属性单个注入
属性setXX()方法需要不需要
复杂类型属性注入支持不支持
松散绑定支持不支持
JSR303数据校验支持不支持
SpEL表达式不支持支持

 Spring Boot可以读取默认名称的配置文件,如application.properties,application.yaml。但如果文件名是其他,则需要指定。添加如下注解

如:@PropertySource("classpath:mysql.properties")

 

通常:@Component 等价于 @Configuration + @EnableConfigurationProperties

1.使用@ConfigurationProperties读取

 配置信息:

#配置student属性  
student.id = 10
student.name=xiaoming
student.sex=F

#以,分割传递 数组集合
student.hobby=football,pingpong,sing

#传递 map 参数
#前缀    属性名 key = value
student.course.math=89
student.course.english=99

student.email=wp@163.com

javabean:必须有setter方法

@Component  //将对象加入容器
@ConfigurationProperties(prefix = "student")  //读取默认配置文件中的student开头的属性
@Validated  //开启属性校验
public class Student {

    private int id;

    private String name;

    private String sex;

    /**
     * 兴趣爱好
     */
    private List<String> hobby;

    /**
     * 成绩
     */
    private Map course;

    @Email
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public List<String> getHobby() {
        return hobby;
    }

    public void setHobby(List<String> hobby) {
        this.hobby = hobby;
    }

    public Map getCourse() {
        return course;
    }

    public void setCourse(Map course) {
        this.course = course;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", hobby=" + hobby +
                ", course=" + course +
                ", email='" + email + '\'' +
                '}';
    }
}

2.使用@value读取

setter可省略

@Component  //将对象加入容器
@Validated  //开启属性校验
public class Student2 {

    @Value("#{2*8}") //@Value("#{2*8}")可以在#{}进行运算,并直接赋值  SpEL表达式
    private int id;

    @Value("#{student.name}")//这样也可以啊!
    private String name;

    @Value("${student.sex}")
    private String sex;

    /**
     * 兴趣爱好
     */
    //@Value("${student.hobby}")  // 复杂类型不支持
    private List<String> hobby;

    /**
     * 成绩
     */
    //@Value("${student.course}") // 复杂类型不支持
    private Map course;

    @Email
    @Value("${student.email}")
    private String email;


    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", hobby=" + hobby +
                ", course=" + course +
                ", email='" + email + '\'' +
                '}';
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值