但行好事  莫问前程

Spring Boot核心(七):类型安全的属性配置

一. 点睛

上面一篇Spring Boot核心(六):常规属性配置文章中使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,若使用上篇文章的方式则要使用@Value注入很多次。

Spring Boot还提供了基于类型安全的属性配置方式,通过@ConfigurationPropertiesproperties属性和一个Bean及其属性关联,从而实现类型安全的配置。

二. 示例

1. 新建Spring Boot项目

2.添加配置

application.properties上添加:

article.author=longjiazuo
article.name=spring boot

当然,我们也可以新建一个properties文件,这就需要我们在@ConfigurationProperties的属性locations里指定properties的位置,且需要在入口类上配置。

3. 创建类型安全的Bean,代码如下所示:

package org.light4j.springboot.save.properties.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "article") // ①
public class ArticleSettings {
    private String author;
    private String name;
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

代码解释:

① 通过ConfigurationProperties加载properties文件内的配置,通过prefix属性指定properties的配置的前缀,通过locations指定properties文件的位置,例如:

@ConfigurationProperties(prefix = "article",locations={"classpath:config/article.properties"}) 

本例中,由于直接配置在application.properties文件里面,所以不需要配置locations属性。

4. 校验代码,修改HelloController的代码如下所示:

package org.light4j.springboot.save.properties.controller;

import org.light4j.springboot.save.properties.config.ArticleSettings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    private ArticleSettings articleSettings; //①

    @RequestMapping("/")
    public String hello() {
        return "article name is "+ articleSettings.getName()+" and article author is "+articleSettings.getAuthor();
    }
}

代码解释:

① 可以用@Autowired直接注入该配置

5. 运行

启动入口程序,访问http://localhost:8080效果如下图所示:

三. 源代码示例:

github地址:点击查看
码云地址:点击查看

打赏
欢迎关注人生设计师的微信公众账号
公众号ID:longjiazuoA

未经允许不得转载:人生设计师 » Spring Boot核心(七):类型安全的属性配置

分享到:更多 ()

人生设计师-接受不同的声音

联系我关于我