Spring Boot -- 外部配置的属性使用
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 -- 外部配置的属性使用的更多相关文章
- 【串线篇】spring boot外部配置加载顺序
SpringBoot也可以从以下位置加载配置: 原则仍然是优先级从高到低:高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 1.命令行参数 所有的配置都可以在命令行上进行指定 java -j ...
- Spring Boot常用配置
概述 本文主要写了下Spring Boot的一些常用配置. Spring Boot基本配置 入口类: Spring Boot通常有一个名为*Application的入口类,入口类里面有一个main方法 ...
- Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener
目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...
- Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties
目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...
- 玩转Spring Boot 自定义配置、导入XML配置与外部化配置
玩转Spring Boot 自定义配置.导入XML配置与外部化配置 在这里我会全面介绍在Spring Boot里面如何自定义配置,更改Spring Boot默认的配置,以及介绍各配置的优先 ...
- Spring Boot自动配置原理(转)
第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...
- Spring Boot自动配置如何工作
通过使用Mongo和MySQL DB实现的示例,深入了解Spring Boot的@Conditional注释世界. 在我以前的文章“为什么选择Spring Boot?”中,我们讨论了如何创建Sprin ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- 玩转spring boot——properties配置
前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...
随机推荐
- 搭建xss-platform平台
一直想搭在公网搭建自己的XSS平台用来验证XSS漏洞,使用别人的平台自己心里总会有担心被摘果子的顾虑,前几天参考了不少前人的博客,终于搭建好了,搭建的途中也遇到了不少坑,故把搭建的经验分享出来,大佬轻 ...
- node.js、yarn、npm到底是什么?
最近在部署环境,在没有开发脚本的情况下,自己根据以往其他项目中的脚本去生搬硬套,发现很难对项目的配置成功.对配置不成功的情况进行判断,发现是对脚本不熟悉,不了解其原理,实现方式也不知道,所以抽时间去了 ...
- .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪
.NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...
- 软件工程团队作业-Alpha阶段项目复审
Alpha阶段项目复审 复审人:黄杰 复审总结表 小组的名字和链接 优点 缺点,bug/140字 最终名次 项目 一个普通的团队 https://www.cnblogs.com/clsgghost/p ...
- CCF统一省选 Day2 题解
此题解是教练给我的作业,AK了本场比赛的人,以及认为题目简单的人可以不必看 T1 算法一 暴力枚举对信号站顺序的不同排列,然后对代价取\(\min\)即可. 时间复杂度\(O(m! \cdot n)\ ...
- 模块urllib requests json xml configparser 学习笔记
发起http请求 获取返回值 返回值是字符串 第三方模块安装 pip install requests 返回值格式 xml html jaon json 功能 loads 字符串>&g ...
- 从用SwiftUI搭建项目说起
前言 后续这个SwiftUI分类的文章全部都是针对SwiftUI的日常学习和理解写的,自己利用Swift写的第二个项目也顺利上线后续的需求也不是特着急,最近正好有空就利用这段时间补一下自己对Swift ...
- easyui form提交时验证必填,打开时不显示必填提示
给textbox添加required:true属性后,打开页面时整个表单都是红的,需要将其设置为提交时再验证. 解决方法:通过textbox的novalidate属性来控制是否开启验证 <inp ...
- RMAN迁移数据库(不改变文件目录)
1.目标库创建相应目录mkdir -p /u01/app/oracle/oradata/orclmkdir -p /u01/app/oracle/fast_recovery_area/ORCLmkdi ...
- Nosql 和 Sql 简单概念介绍
Nosql (非关系数据库) 代表数据库:redis / hbase /mongoDB /CouchDB /Neo4J 存储数据使用的是数据结构化存储方法的集合,意味着数据的存储可以是文档.集合.键值 ...