Spring Boot入门(二):获取配置文件值

口水娃V字脆香辣牛肉多味组散装妙脆角炒货批发膨化小吃零食 【在售价】14.90 元 【券后价】9.90元 ----------------- 【立即下单】复制$xv2HcZG1jMp$打开手机淘宝立即下单

本篇博客主要讲解下在Spring Boot中如何获取配置文件的值。

1. 使用yaml配置文件

Spring Boot默认生成的配置文件为application.properties,不过它也支持yaml语言的配置文件,

两者之间的差别并不是很大,只是yaml语言的配置文件层次结构更明显,可读性更强,因此目前使用的更多一些。

我们假设本来application.properties的配置为:

spring.main.banner-mode=off

那么如何将配置文件切换为application.yml呢?

首先删除掉原来的配置文件application.properties,新增配置文件application.yml,新增方式如下:

Spring Boot入门(二):获取配置文件值

Spring Boot入门(二):获取配置文件值

Spring Boot入门(二):获取配置文件值

然后修改application.yml为:

spring:
  main:
    banner-mode: "off"

运行结果和原来使用properties配置文件时一致。

2. 使用@Value注解获取配置文件值

首先在application.yml中添加如下配置:

book:
  author: wangyunfei
  name: spring boot

然后修改启动类的代码为:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Value("${book.name}")
    private String bookName;

    @Value("${book.author}")
    private String bookAuthor;

    @RequestMapping("/")
    public String index() {
        return "book name is:" + bookName + " and book author is:" + bookAuthor;
    }

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

运行项目,在浏览器中输入http://localhost:8080/,会看到如下信息:

Spring Boot入门(二):获取配置文件值

这种方式和在Spring项目中的使用方式一样,更多的细节,可以查看我之前总结的博客:

Spring入门(九):运行时值注入。

3. 使用@ConfigurationProperties注解获取配置文件值

Spring Boot还提供了@ConfigurationProperties注解来获取配置文件值,该种方式可把配置文件值和一个Bean自动关联起来,使用起来更加方便而且类型安全,建议使用这种方式

首先,在application.yml中添加如下配置:

author:
  name: wangyunfei
  age: 32

然后,新建类AuthorSettings,添加@Component注解和@ConfigurationProperties注解:

package com.zwwhnly.springbootaction;

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

@Component
@ConfigurationProperties(prefix = "author")
public class AuthorSettings {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

这里的重点是@ConfigurationProperties注解,它的prefix属性用来指定配置的前缀,如本例中的author。

然后修改启动类的代码为:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Autowired
    private AuthorSettings authorSettings;

    @RequestMapping("/")
    public String index() {
        return "author name is " + authorSettings.getName() + " and author age is " + authorSettings.getAge();
    }

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

运行项目,在浏览器中输入http://localhost:8080/,会看到如下信息:

Spring Boot入门(二):获取配置文件值

4. 使用Profile实现多环境配置管理

一般情况下,我们开发的应用程序都会有多套环境, 如dev环境,qa环境,prod环境,那么如何实现多套环境下的配置管理呢?

其实在Spring Boot下,我们可以使用Profile来实现,接下来讲解下具体的实现方式。

首先,新建2个配置文件:application-dev.yml,application-prod.yml。

此时的项目结构如下图所示:

Spring Boot入门(二):获取配置文件值

如果有的同学比较喜欢用properties文件,可以用下图中的方式新建:

Spring Boot入门(二):获取配置文件值

Spring Boot入门(二):获取配置文件值

默认情况下,启动的端口号为8080,如果我们希望在dev环境使用端口号8082,在prod环境使用端口号8083,那么可以修改配置文件如下:

application-dev.yml新增如下配置:

server:
  port: 8082

application-prod.yml新增如下配置:

server:
  port: 8083

运行项目,如下图所示:

Spring Boot入门(二):获取配置文件值

我们会发现,仍然使用的是默认的端口号8080,那么如何指定使用dev或者prod环境的端口呢?

我们需要在application.yml新增如下配置:

spring:
  profiles:
    active: dev

此时,再次运行项目,会发现使用的是端口号8082,也就是application-dev.yml文件中配置的。

Spring Boot入门(二):获取配置文件值

如果希望使用prod环境的,可以修改配置为:

spring:
  profiles:
    active: prod

运行结果为:

Spring Boot入门(二):获取配置文件值

关于Spring项目中Profile的使用可以查看我之前总结的博客:Spring入门(七):Spring Profile使用讲解。

5. 源码及参考

源码地址:https://github.com/zwwhnly/springboot-action.git,欢迎下载。

汪云飞《Java EE开发的颠覆者:Spring Boot实战》

SpringBoot - 多Profile使用与切换

IDEA如何创建.properties文件

最后,欢迎关注我的微信公众号:「申城异乡人」,所有博客会同步更新。

栏目
文章分类
榴芒一刻榴莲泡泡网红大福零食雪媚娘日本糯米糍榴莲麻薯甜品糕点 【在售价】138.00 元 【券后价】88.00元 ----------------- 【立即领券】复制$MYw6cZGNPHS$打开手机淘宝领券并下单