Spring Boot允许使用propertities文件、yaml文件或者命令行参数作为外部配置。

命令行参数配置

Spring Boot可以基于jar包运行,打成jar包的程序可以直接通过下面的命令运行:

java -jar xx.jar

可以通以下命令修改Tomcat端口号:

java -jar xx.jar --server.port=9090

常规属性配置

在Spring Boot里,我们只需要在application.properties定义属性,直接使用@Value注入即可。

(1)application.properties属性

blog.author = 佛大Java程序员
blog.subject = Spring Boot --外部配置的属性注入

(2)修改入口类

@RestController
@SpringBootApplication
public class PropertiesdemoApplication { @Value("${blog.author}")
private String blogAuthor;
@Value("${blog.subject}")
private String blogSubject; /**
* 常规属性配置
* 注意路径/properties
* @return
*/
@RequestMapping("/properties")
String index(){
return "blog author is:" + blogAuthor + " and blog subject is:" + blogSubject;
} public static void main(String[] args) {
SpringApplication.run(PropertiesdemoApplication.class, args);
} }

(3)运行,浏览器访问http://localhost:8080/properties/

类型安全的配置

类型安全一句话理解:可以批量将属性注入对象中的方法。

基于系统配置文件

(1)application.properties属性

blog.author = 佛大Java程序员
blog.subject = Spring Boot --外部配置的属性注入

(2) 类型安全的Bean

/**
* @author 佛大Java程序员
* @since 1.0.0
*/
@Component
@ConfigurationProperties(prefix = "blog")
public class BlogSetting {
private String author;private String subject; public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} public String getSubject() {
return subject;
} public void setSubject(String subject) {
this.subject = subject;
}
}

注解解释

@ConfigurationProperties加载properties文件内的配置,通过prefix属性指定properties的配置的前缀。

(3)入口类

@RestController
@SpringBootApplication
public class PropertiesdemoApplication { @Autowired
private BlogSetting blogSetting; /**
* 类型安全的配置 -- 系统属性文件
* 注意请求路径/ConfigurationProperties
* @return
*/
@RequestMapping("/ConfigurationProperties")
String index0(){
return "blog author is:" + blogSetting.getAuthor() + " and blog subject is:" + blogSetting.getSubject();
} public static void main(String[] args) {
SpringApplication.run(PropertiesdemoApplication.class, args);
} }

注解说明:使用@Autowires直接注入该配置。

 (4) 运行

浏览器访问 -- http://localhost:8080/ConfigurationProperties

基于自定义配置文件

我们也可以新建一个自定义的properties文件,需要我们在安全类型Bean上添加@PropertySource来指定自定义的属性文件的位置。

(1) 添加自定义属性文件

customize.properties 

article.author = 博客作者 -- 佛大Java程序员
article.subject = 博客主题 -- 外部配置的属性注入

(2)  类型安全的Bean

/**
* @author 佛大Java程序员
* @since 1.0.0
*/
@Component
@ConfigurationProperties(prefix = "article")
@PropertySource(value={"classpath:config/customize.properties"})
public class BlogSetting { private String author;
private String subject; public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} public String getSubject() {
return subject;
} public void setSubject(String subject) {
this.subject = subject;
}
}

注意:

@ConfigurationProperties(prefix = "article")
@PropertySource(value={"classpath:config/customize.properties"})

(3)入口类

@RestController
@SpringBootApplication
public class PropertiesdemoApplication { @Autowired
private BlogSetting blogSetting; /**
* 类型安全的配置 -- 自定义属性文件
* 注意请求路径/customizeProperties
* @return
*/
@RequestMapping("/customizeProperties")
String index1(){
return "article author is:" + blogSetting.getAuthor() + " and article subject is:" + blogSetting.getSubject();
} public static void main(String[] args) {
SpringApplication.run(PropertiesdemoApplication.class, args);
} }

 (4) 运行

浏览器输入 --  http://localhost:8080/customizeProperties/

补充说明:

(1) 在SpringBoot1.4之后取消了@ConfigurationProperties中的属性location,原本可以用来指定属性文件的位置,上面的例子是实现使用自定义配置属性的方法之一。

(2) 注意Spring Boot常规属性配置和Spring中的注入配置文件属性中的内容的区别

Spring环境下中需要使用@PropertySource指定文件地址,若使用@Value注入,则要配置一个PropertySourcePlaceholderConfigurer的Bean。注意@Value中使用的是的“$“不是”#“。

Spring Boot中只需要在application.properties定义属性,直接使用@Value注入即可。

常见面试题:

(1) 项目中用到了Spring Boot中的哪些注解?怎么用的?(蓝月亮1-3年)

(2)项目中怎么引入外部配置中的属性?(蓝月亮1-3年)

参考:

《Spring Boot实战》-- 汪云飞 编著

Spring Boot -- 外部配置的属性使用的更多相关文章

  1. 【串线篇】spring boot外部配置加载顺序

    SpringBoot也可以从以下位置加载配置: 原则仍然是优先级从高到低:高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 1.命令行参数 所有的配置都可以在命令行上进行指定 java -j ...

  2. Spring Boot常用配置

    概述 本文主要写了下Spring Boot的一些常用配置. Spring Boot基本配置 入口类: Spring Boot通常有一个名为*Application的入口类,入口类里面有一个main方法 ...

  3. Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener

    目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...

  4. Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties

    目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...

  5. 玩转Spring Boot 自定义配置、导入XML配置与外部化配置

    玩转Spring Boot 自定义配置.导入XML配置与外部化配置       在这里我会全面介绍在Spring Boot里面如何自定义配置,更改Spring Boot默认的配置,以及介绍各配置的优先 ...

  6. Spring Boot自动配置原理(转)

    第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...

  7. Spring Boot自动配置如何工作

    通过使用Mongo和MySQL DB实现的示例,深入了解Spring Boot的@Conditional注释世界. 在我以前的文章“为什么选择Spring Boot?”中,我们讨论了如何创建Sprin ...

  8. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  9. 玩转spring boot——properties配置

    前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...

随机推荐

  1. 爬虫模块-requests

    title: python爬虫01 date: 2020-03-08 22:56:12 tags: 1.requests模块 requests模块的底层是urllib,但是比urllib更强大也更加简 ...

  2. Google浏览器PostMan插件版安装步骤

    PostMan插件版安装步骤: 第一步:把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar 第二步:右键点击该文件,并使用压缩软件(如winrar.360压缩等)对该压 ...

  3. PostMan设置环境变量&全局变量

    一.设置环境变量 1.点击右上角Manage Environment,进入环境变量设置界面 2.定义环境名称,参数名及参数值 3.将接口地址中服务器地址进行参数化,并选择对应的环境执行 二.设置全局变 ...

  4. bugkuctf web区 多次

    首先看到以下url : 发现这是一个基于布尔类型的盲注. true: false: 根据这两种类型可以进行注入.废话不多说,直接进行尝试. 构造 url = index.php?id=1' or 1= ...

  5. MySQL(14)---Docker搭建MySQL主从复制(一主一从)

    Docker搭建MySQL主从复制(一主一从) 上一篇博客写了MYSQL主从复制原理 : MySQL(13)---MYSQL主从复制原理 这篇我们来写 Docker搭建MYSQL主从复制(一主一从) ...

  6. 巨经典论文!推荐系统经典模型Wide & Deep

    今天我们剖析的也是推荐领域的经典论文,叫做Wide & Deep Learning for Recommender Systems.它发表于2016年,作者是Google App Store的 ...

  7. 精尽Spring MVC源码分析 - 调式环境搭建

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  8. 五、Jmeter的目录结构

    进入安装Jmeter可以看到路径 bin目录 jmeter.bat  windows的启动文件 jmeter.log jmeter运行日志文件 jmeter.sh linux的启动文件 jmeter. ...

  9. dataframe,list,numpy之间的互相转换

    dataframe,numpy,list之间的互相转换 由于目前学校要做一些数据分析处理的作业有要用到dataframe,list,numpy之间的转化,所以在此总结一下这些用法. dataframe ...

  10. SpringBoot从入门到精通教程(六)

    之前学了,这么多东西 thyemeaf .MyBatis 还有 配置文件等等,今天我们就来做一个小案例 CRUD,程序员的必备 项目结构 pom.xml <!-- mybatis 相关依赖 -- ...