本篇博客主要讲解下在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项目中的使用方式一样,更多的细节,可以查看我之前总结的博客:

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实战》

SpringBoot - 多Profile使用与切换

IDEA如何创建.properties文件

Spring Boot入门(二):获取配置文件值的更多相关文章

  1. Spring Boot入门(二):使用Profile实现多环境配置管理&如何获取配置文件值

    在上一篇博客Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件中,我们新建了一个最原始的Spring Boot项目,并使用了更为流行的yaml配置文件. ...

  2. Spring boot 入门二:Spring Boot配置文件详解

    一.自定义属性 当我们创建一个springboot项目的时候,系统默认会为我们在src/main/java/resources目录下创建一个application.properties.同时也支持ym ...

  3. Spring Boot 入门之 Web 篇(二)

    原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...

  4. Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

    上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...

  5. Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率

    本片博客是紧接着Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志写的 关于poi.jxl和esayExcel的介绍自行百度. jxl最多支持03版excel,所以单个 ...

  6. Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...

  7. Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件

    由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...

  8. spring boot 入门操作(二)

    spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...

  9. Spring Boot 入门案例与配置说明

    一.Spring Boot简介 官网地址:http://spring.io/projects/spring-boot Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用 ...

随机推荐

  1. Leetcode 96.不同的搜索二叉树

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / ...

  2. 浅析java垃圾回收机制

    什么是java程序中的垃圾?什么这些垃圾又是怎样被回收的?为什么会被回收?不进行回收又会怎样?这些问题都是我们要在这篇博客中要解决的问题! 大家都知道,在c语言中,作为程序员,必须得考虑到去怎样回收已 ...

  3. Java 基础篇之反射

    反射 使用反射获取程序运行时的对象和类的真实信息. 获取 Class 对象 每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类. 使 ...

  4. HDU 1159——Common Subsequence(DP)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 题解 #include<iostream> #include<cstring> ...

  5. SpringBoot导入jsp依赖始终报错

    先粘出我自己的pom代码: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  6. ARP攻击原理简析及防御措施

    0x1  简介 网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验.网络安全的战场已经从互联网蔓延到用户内部的网络, 特别是局域网.目前利用ARP欺骗的木马病毒在局域网中广泛传 ...

  7. Spring DestorySingleton流程

     第一节介绍Spring启动(链接)时,介绍AbstractApplicationContext的过销毁过程,主要是调用了内部的destroyBeans方法,这节便来介绍bean的销毁过程. 一.销毁 ...

  8. 《Windows内核分析》专题-索引目录

    该篇博客整理了<Windows内核分析>专题的各篇博文,方便查找. 一.保护模式 二.进程与线程 [Windows内核分析]KPCR结构体介绍 (CPU控制区 Processor Cont ...

  9. salt-api 配置使用

    salt-api 安装  配置源 (系统环境s示例是centos6) epel 源 rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/6/i386/ ...

  10. CentOS 7 的 systemctl 命令

    Centos 7.* 使用 Systemd 进行系统初始化,因此,Centos 7.* 中我们可以使用 systemctl 管理系统中的服务. systemctl 管理的服务均包含了一个以 .serv ...