Spring Boot入门(二):获取配置文件值
本篇博客主要讲解下在Spring Boot中如何获取配置文件的值。
1. 使用yaml配置文件
Spring Boot默认生成的配置文件为application.properties,不过它也支持yaml语言的配置文件,
两者之间的差别并不是很大,只是yaml语言的配置文件层次结构更明显,可读性更强,因此目前使用的更多一些。
我们假设本来application.properties的配置为:
spring.main.banner-mode=off
那么如何将配置文件切换为application.yml呢?
首先删除掉原来的配置文件application.properties,新增配置文件application.yml,新增方式如下:



然后修改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项目中的使用方式一样,更多的细节,可以查看我之前总结的博客:
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/,会看到如下信息:

4. 使用Profile实现多环境配置管理
一般情况下,我们开发的应用程序都会有多套环境, 如dev环境,qa环境,prod环境,那么如何实现多套环境下的配置管理呢?
其实在Spring Boot下,我们可以使用Profile来实现,接下来讲解下具体的实现方式。
首先,新建2个配置文件:application-dev.yml,application-prod.yml。
此时的项目结构如下图所示:

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


默认情况下,启动的端口号为8080,如果我们希望在dev环境使用端口号8082,在prod环境使用端口号8083,那么可以修改配置文件如下:
application-dev.yml新增如下配置:
server:
port: 8082
application-prod.yml新增如下配置:
server:
port: 8083
运行项目,如下图所示:

我们会发现,仍然使用的是默认的端口号8080,那么如何指定使用dev或者prod环境的端口呢?
我们需要在application.yml新增如下配置:
spring:
profiles:
active: dev
此时,再次运行项目,会发现使用的是端口号8082,也就是application-dev.yml文件中配置的。

如果希望使用prod环境的,可以修改配置为:
spring:
profiles:
active: prod
运行结果为:

关于Spring项目中Profile的使用可以查看我之前总结的博客:Spring入门(七):Spring Profile使用讲解。
5. 源码及参考
源码地址:https://github.com/zwwhnly/springboot-action.git,欢迎下载。
汪云飞《Java EE开发的颠覆者:Spring Boot实战》
Spring Boot入门(二):获取配置文件值的更多相关文章
- Spring Boot入门(二):使用Profile实现多环境配置管理&如何获取配置文件值
在上一篇博客Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件中,我们新建了一个最原始的Spring Boot项目,并使用了更为流行的yaml配置文件. ...
- Spring boot 入门二:Spring Boot配置文件详解
一.自定义属性 当我们创建一个springboot项目的时候,系统默认会为我们在src/main/java/resources目录下创建一个application.properties.同时也支持ym ...
- Spring Boot 入门之 Web 篇(二)
原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...
- Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件
上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...
- Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率
本片博客是紧接着Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志写的 关于poi.jxl和esayExcel的介绍自行百度. jxl最多支持03版excel,所以单个 ...
- Spring Boot入门系列(二十)快速打造Restful API 接口
spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...
- Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件
由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...
- spring boot 入门操作(二)
spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...
- Spring Boot 入门案例与配置说明
一.Spring Boot简介 官网地址:http://spring.io/projects/spring-boot Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用 ...
随机推荐
- MOOC C++笔记(一):从C到C++
第一周:从C到C++ 引用 概念 类型名&引用名=某变量名 某个变量的引用,等价于这个变量,相当于该变量的别名 注意事项 1.定义引用时一定要将其初始化成引用某个变量. 2.初始化后,它就一直 ...
- 03:H.264编码原理以及视频压缩I、P、B帧
一:前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中, 一般有差别的像素只有1 ...
- Spring Boot2 系列教程(七)理解自动化配置的原理
Spring Boot 中的自动化配置确实够吸引人,甚至有人说 Spring Boot 让 Java 又一次焕发了生机,这话虽然听着有点夸张,但是不可否认的是,曾经臃肿繁琐的 Spring 配置确实让 ...
- 使用回车键执行input框事件
html: <input type="text" class="search-data-input" placeholder="请输入关键词&q ...
- python Fatal error in launcher
1.之前电脑上只安装了一个python2.7时pip install virtualenv安装了virtualenv,后来又装了py3.6.最近想做断网环境下的虚拟环境快速移植发现查看virtuale ...
- C#连接Mongo报Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1错的解决方案
---恢复内容开始--- 最近做一个基于ABP的.net Core的项目,数据库选了MongoDB,但是返现无法给数据库设置认证,只要设置了账号密码连接就报错 连接串如下: mongodb://roo ...
- Java 基础篇之编程基础
基本数据类型 java 是强类型语言,在 java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. 基本数据类型变量存储的是数据本身,而引用类型变量存的是数据的空间地址. 基本类型转换 自动 ...
- IT修养-基础篇
1.科学基础 成为开发人员的过程不尽相同,有的是科班出身,有的是兴趣爱好,还有的是专业机构的培训,在这个过程中,可能全面或者零散甚至没有学习过计算机基础学科,但无论是哪一种,想要成为更高层次的开发人员 ...
- .NET之Hangfire快速入门和使用
前言: 定时任务调度问题,是一个老生常谈的问题.网上有许多定时任务调度的解决方案,对于我而言很早以前主要是使用Window计划和Window服务来做任务定时执行,然后就开始使用定时任务调度框架Quar ...
- 如何把安全证书导入到java中的cacerts证书库
每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载, 在该网页上右键 >> 属性 >> 点击"证书" >> 再 ...