(三)、Spring Boot读取配置文件中的数据

一、Spring Boot读取配置文件applicaion.properties 和 application.yml文件数据

application.properties文件的内容如下:

book.name = SpringCloudInAction
book.author = HDN

1、通过@Value注解进行读取

     1.1、配置一个Bean使其装载到Spring的Ioc容器中

/**
 * @author HDN
 * @date 2019/6/14 14:37
 */
@Component
public class Book {
    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

     1.2、通过注入Book来获取配置文件中的值

/**
 * @author HDN
 * @date 2019/6/5 16:19
 */
@RestController
@RequestMapping("/controller")
public class HelloController {
    @Autowired
    Book book;

    @RequestMapping("/getProperties")
    public String getProperties(){
        return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
    }
}

     1.3、运行结果如下:

2、通过注入Environment对象来读取配置文件的内容

      2.1、直接注入Environment对象根据getProperty(param)方法就可得到对应的值

              param:配置文件中=前面的属性(key属性)

/**
 * @author HDN
 * @date 2019/6/5 16:19
 */
@RestController
@RequestMapping("/controller")
public class HelloController {
    @Autowired
    Book book;

    @Autowired
    Environment env;

    @RequestMapping("/getProperties")
    public String getProperties(){
        return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
                "2、通过Environment注入对象来获取配置文件属性值:"+env.getProperty("book.name")+"----"+env.getProperty("book.author")+"<p>"+
    }
}

       2.2、运行结果如下:

3、通过@ConfigurationProperties来读取配置文件的内容

     3.1、配置一个Bean使其装载到Spring的Ioc容器中

/**
 * @author HDN
 * @date 2019/6/14 15:25
 */
@Component
@ConfigurationProperties(prefix = "book")
public class BookConfigPro {
    private String name;

    private String author;

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

      3.2、通过注入BookConfigPro来获取配置文件中的值

/**
 * @author HDN
 * @date 2019/6/5 16:19
 */
@RestController
@RequestMapping("/controller")
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!";
    }

    @Autowired
    Book book;

    @Autowired
    Environment env;

    @Autowired
    BookConfigPro bookConfigPro;

    @RequestMapping("/getProperties")
    public String getProperties(){
        return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
                "2、通过Environment注入对象来获取配置文件属性值:"+env.getProperty("book.name")+"----"+env.getProperty("book.author")+"<p>"+
                "3、通过@ConfigurationProperties注解获取配置文件属性:"+bookConfigPro.getName()+"----"+bookConfigPro.getAuthor();
    }
}

      3.3、运行结果如下:

  

二、如果有自己定义的配置文件,如config.properties,要使用@PropertySource(value="config.properties")注解来加载自定义配置文件中的内容。

这里值得注意的两点内容:第一、YAML文件不能使用@PropertySource注解;第二、如果自定义的配置文件和                     application.properties中有相同的配置时,优先加载application.properties文件中的配置内容。

猜你喜欢

转载自blog.csdn.net/hdn_kb/article/details/91978799