springboot之配置文件
springboot在加载配置文件的时候是有先后顺序的,了解加载配置文件的先后顺序,可以减少编写程序出现错误
1 springboot加载配置文件的先后顺序如下:
SpringApplication将从以下位置加载application.properties文件,并把它们添加到Spring Environment中:
- 当前目录下的
/config子目录。 - 当前目录。
- classpath下的
/config包。 - classpath根路径(root)
启动的时候,1中的配置文件优先级最高,会覆盖2,3,4中的配置信息
2 工程结构如图:

代码如下:
package com.rookie.bigdata.config; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; /**
* springboot注入随机值
* my.secret=${random.value}
* my.number=${random.int}
* my.bignumber=${random.long}
* my.number.less.than.ten=${random.int(10)}
* my.number.in.range=${random.int[1024,65536]}
* <p>
* <p>
* Created by on 2018/9/29.
*/
@Component
//此注解可以省略
//@ConfigurationProperties
public class RandomConfig { @Value("${random.value}")
private String secret;
@Value("${random.long}")
private Long number; @Value("${random.int(10)}")
private String numberLess; @Value("${random.int[1024,65536]}")
private Integer numberRange; @Value("${name}")
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSecret() {
return secret;
} public void setSecret(String secret) {
this.secret = secret;
} public Long getNumber() {
return number;
} public void setNumber(Long number) {
this.number = number;
} public String getNumberLess() {
return numberLess;
} public void setNumberLess(String numberLess) {
this.numberLess = numberLess;
} public Integer getNumberRange() {
return numberRange;
} public void setNumberRange(Integer numberRange) {
this.numberRange = numberRange;
}
}
package com.rookie.bigdata.config; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; /**
*
* springboot允许使用占位符进行配置
* Created by on 2018/9/29.
*/
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.description}")
private String appDesc; public String getAppName() {
return appName;
} public void setAppName(String appName) {
this.appName = appName;
} public String getAppDesc() {
return appDesc;
} public void setAppDesc(String appDesc) {
this.appDesc = appDesc;
}
}
package com.rookie.bigdata; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* 应用程序启动类
* Created by on 2018/8/2.
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication();
//通过设置该参数禁用命令行属性添加到Environment
// springApplication.setAddCommandLineProperties(false); springApplication.run(Application.class, args); }
}
package com.rookie.bigdata.config; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.*; /**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class AppConfigTest { @Autowired
AppConfig appConfig; @Test
public void test1() {
System.out.println(appConfig.getAppName());
System.out.println(appConfig.getAppDesc());
} }
package com.rookie.bigdata.config; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.*; /**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class RandomConfigTest { @Autowired
RandomConfig randomConfig; @Test
public void test1(){
System.out.println(randomConfig.getSecret());
System.out.println(randomConfig.getNumber());
System.out.println(randomConfig.getNumberLess());
System.out.println(randomConfig.getNumberRange());
System.out.println(randomConfig.getName());
}
}
配置文件如下
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.number.less.than.ten=${random.int(10)}
#my.number.in.range=${random.int[1024,65536]}
name=lisi
#属性占位符
#当使用application.properties定义的属性时,Spring会先通过已经存在的Environment查找该属性,所以你可以引用事先定义的值
app.name=appStore
app.description=${app.name} is a Spring Boot application
connection.username=root
connection.password=roots
3、使用@Value("${property}")注解注入配置属性有时会比较麻烦,特别是需要使用多个properties,或数据本身有层次结构。Spring Boot提供一种使用配置的替代方法,这种方法允许强类型的beans以管理和校验应用的配置,代码如下:
package com.rookie.bigdata.config; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component; /**
* Created by liuxili on 2018/9/29.
*/
//@Component
@Configuration
@ConfigurationProperties(prefix = "connection")
public class ConnectionConfig { private String userName; private String passWord; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
package com.rookie.bigdata.config; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.*; /**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConnectionConfigTest { @Autowired
private ConnectionConfig connectionConfig; @Test
public void test1(){
System.out.println(connectionConfig.getPassWord());
System.out.println(connectionConfig.getUserName());
}
}
属性名配置一般规则如下:
| 属性 | 说明 |
|---|---|
person.firstName |
标准驼峰规则 |
person.first-name |
虚线表示,推荐用于.properties和.yml文件中 |
person.first_name |
下划线表示,用于.properties和.yml文件的可选格式 |
PERSON_FIRST_NAME |
大写形式,使用系统环境变量时推荐 |
对于使用yml文件配置跟这里配置差不多,这里不再赘述,看个人喜好,有人喜好properties进行配置,有人喜好yml文件进行配置
springboot之配置文件的更多相关文章
- SpringBoot之配置文件加载位置
1.SpringBoot启动会扫描application.properties或者application.yml文件作为springboot的配置文件.默认创建项目生成application.prop ...
- [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件
首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...
- springboot读取配置文件的顺序
前言 今天测试一些东西,发现配置文件连接的数据库一直不正常,数据也不对,今天请教了之后,原来springboot的配置文件加载不仅仅是项目内的配置文件. 正文 项目目录是这样的:文件夹下有:项目,ap ...
- SpringBoot读取配置文件源码探究
1. SpringBoot读取配置文件源码探究 1.1. 概览 springboot的源码是再原来的Spring源码上又包了一层,看过spring源码都知道,当我们从入口debug进去的时候,原来的S ...
- springboot yml配置文件注入值
1.编写javabean: package com.example.springboot.bean; import org.springframework.boot.context.propertie ...
- SpringBoot:配置文件及自动配置原理
西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...
- SpringBoot系列:二、SpringBoot的配置文件
SpringBoot的配置文件在resources文件夹下 springboot的配置文件支持两种形式的写法,一种是经典的properties另一种是yml yml通过空格缩进的形式来表示对象的层级关 ...
- 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置
前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...
- springboot指定配置文件运行
1.springboot指定配置文件运行 创建三个配置文件如下: application.properties内容如下: spring.profiles.active=rabbit如上配置,在运行时就 ...
- SpringBoot(二) SpringBoot核心配置文件application.yml/properties
我们都知道在Spring中有着application.xml文件对Spring进行相关配置,通过web.xml中的contextConfigLocation指定application.xml文件所在位 ...
随机推荐
- spring的配置和使用
spring的配置和使用 1. 创建基于java的配置. 配置极少量的XML来启用java配置: <?xml version="1.0" encoding="U ...
- BOM与DOM操作
BOM: OM-JavaScript是运行在浏览器中的,所以提供了一系列对象用于和浏览器窗口进行交互,这些对象主要包括window.document.location.navigator和screen ...
- NeuChar 平台使用及开发教程(一):开始使用 NeuChar
如果您还不知道什么是 NeuChar,或者我们为什么要做 NeuChar,请看这里. 角色 NeuChar 打通了从开发者到终端用户的完整的上下游链路,了解 NeuChar 之前,先要明确两个角色身份 ...
- 安卓开发学习笔记(七):仿写腾讯QQ登录注册界面
这段代码的关键主要是在我们的相对布局以及线性布局上面,我们首先在总体布局里设置为线性布局,然后再在里面设置为相对布局,这是一个十分常见的XML布局模式. 废话不多说,直接上代码:一.activity. ...
- 阿里云对象存储 OSS 应用服务器搭建代码
背景说明 最近做一个APP客户端图片直传阿里云OSS的服务,需要在后台开一个阿里云的OSSToken获取的接口. 阿里云官方文档地址:快速搭建移动应用直传服务. 略过移动端说明,直接看服务端的. 不是 ...
- [Swift]LeetCode235. 二叉搜索树的最近公共祖先 | Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- [Swift]LeetCode254.因子组合 $ Factor Combinations
Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...
- [Swift]LeetCode822. 翻转卡片游戏 | Card Flipping Game
On a table are N cards, with a positive integer printed on the front and back of each card (possibly ...
- 【Spark篇】---Spark初始
一.前述 Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目.One stack rule ...
- 8.Flask-Script
Flask-script的作用是可以通过命令行的形式操作flask.安装方式:pip install flask-script 1.1.command装饰器 (1)创建manage.py from f ...