-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path45852.html
257 lines (248 loc) · 39.8 KB
/
45852.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SpringBoot(十):配置文件详解 | 征蓬</title><meta name="keywords" content="SpringBoot"><meta name="author" content="huy"><meta name="copyright" content="huy"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="application 配置文件详解">
<meta property="og:type" content="article">
<meta property="og:title" content="SpringBoot(十):配置文件详解">
<meta property="og:url" content="http://example.com/45852.html">
<meta property="og:site_name" content="征蓬">
<meta property="og:description" content="application 配置文件详解">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://example.com/pics/scenery/02.jpg">
<meta property="article:published_time" content="2022-04-30T03:31:38.000Z">
<meta property="article:modified_time" content="2022-05-17T01:05:49.385Z">
<meta property="article:author" content="huy">
<meta property="article:tag" content="SpringBoot">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://example.com/pics/scenery/02.jpg"><link rel="shortcut icon" href="/pics/avatar/8.png"><link rel="canonical" href="http://example.com/45852"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/font/wcsf.ttf" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: {"path":"search.xml","languages":{"hits_empty":"找不到您查询的内容:${query}"}},
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#121212","position":"bottom-left"},
source: {
jQuery: 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js',
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
},
fancybox: {
js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isanchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'SpringBoot(十):配置文件详解',
isPost: true,
isHome: false,
isHighlightShrink: false,
isToc: true,
postUpdate: '2022-05-17 09:05:49'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if (GLOBAL_CONFIG_SITE.isHome && /iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><link rel="stylesheet" href="/css/custom.css" media="defer" onload="this.media='all'"><!-- hexo injector head_end start --><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.min.css" media="defer" onload="this.media='all'"><script async src="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js"></script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 5.4.1"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/pics/Asoul/8.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">54</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">17</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">12</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('/pics/scenery/02.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">征蓬</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">SpringBoot(十):配置文件详解</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2022-04-30T03:31:38.000Z" title="发表于 2022-04-30 11:31:38">2022-04-30</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2022-05-17T01:05:49.385Z" title="更新于 2022-05-17 09:05:49">2022-05-17</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/SpringBoot/">SpringBoot</a></span></div><div class="meta-secondline"></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><h2 id="配置文件区别">配置文件区别</h2>
<ol>
<li>
<p>提供了两种类型:properties 和 yml/yaml</p>
</li>
<li>
<p>默认配置文件名称:application</p>
</li>
<li>
<p>同一级目录下优先级位:properteis > yml > yaml</p>
</li>
<li>
<p>如果低优先级文件有高优先级文件没有的配置信息,也会生效</p>
</li>
</ol>
<h2 id="YML-YAML-语法和格式">YML/YAML 语法和格式</h2>
<h3 id="语法要求">语法要求</h3>
<ol>
<li>
<p>大小写敏感</p>
</li>
<li>
<p><strong>数据值前必须有空格作为分隔符</strong></p>
</li>
<li>
<p>使用空格表示层级关系,相同缩进为一级</p>
</li>
<li>
<p><strong>不允许使用 tab 缩进,必须使用空格(idea使用tab时默认产生4个空格)</strong></p>
</li>
<li>
<p>缩进空格数不重要,只要相同层级的元素左侧对齐</p>
</li>
<li>
<p>使用 <code>#</code> 作为行注释</p>
</li>
<li>
<p>使用 ${key} 获取数据</p>
</li>
</ol>
<h3 id="数据格式">数据格式</h3>
<ul>
<li>
<p>Map</p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 缩进写法</span></span><br><span class="line"><span class="attr">person:</span></span><br><span class="line"> <span class="attr">name:</span> <span class="string">zhangsan</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 行内写法</span></span><br><span class="line"><span class="attr">person:</span> {<span class="attr">name:</span> <span class="string">zhangsan</span>}</span><br></pre></td></tr></table></figure>
</li>
<li>
<p>数组(使用 <code>-</code> 表示每个元素)</p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 缩进写法</span></span><br><span class="line"><span class="attr">address:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">beijing</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">shanghai</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 行内写法</span></span><br><span class="line"><span class="attr">address:</span> [<span class="string">beijing</span>,<span class="string">shanghai</span>]</span><br></pre></td></tr></table></figure>
</li>
<li>
<p>常量</p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 单引号不识别转义字符</span></span><br><span class="line"><span class="attr">msg1:</span> <span class="string">'hello \n world'</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 双引号识别转义字符</span></span><br><span class="line"><span class="attr">msg2:</span> <span class="string">"hello \n world"</span></span><br></pre></td></tr></table></figure>
</li>
</ul>
<h2 id="获取配置文件内容">获取配置文件内容</h2>
<h3 id="application-yml-配置的数据">application.yml 配置的数据</h3>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 测试用数据</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">abc</span></span><br><span class="line"></span><br><span class="line"><span class="attr">person:</span></span><br><span class="line"> <span class="attr">name:</span> <span class="string">zhangsan</span></span><br><span class="line"> <span class="attr">age:</span> <span class="number">20</span></span><br><span class="line"> <span class="attr">address:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">beijing</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">shanghai</span></span><br><span class="line"></span><br><span class="line"><span class="attr">address:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">beijing</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">shanghai</span></span><br><span class="line"></span><br><span class="line"><span class="attr">msg1:</span> <span class="string">'hello \n world'</span></span><br><span class="line"><span class="attr">msg2:</span> <span class="string">"hello \n world"</span></span><br></pre></td></tr></table></figure>
<h3 id="Value">@Value</h3>
<p>需要手动单独配置每个属性注入,属性太多时比较繁琐。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Value("${name}")</span></span><br><span class="line"><span class="keyword">private</span> String stringName;</span><br><span class="line"></span><br><span class="line"><span class="meta">@Value("${person.name}")</span></span><br><span class="line"><span class="keyword">private</span> String personName;</span><br><span class="line"></span><br><span class="line"><span class="meta">@Value("${person.age}")</span></span><br><span class="line"><span class="keyword">private</span> String personAge;</span><br><span class="line"></span><br><span class="line"><span class="meta">@RequestMapping("/getConfigAttribute")</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> Result <span class="title">getString</span><span class="params">()</span> </span>{</span><br><span class="line"> JSONObject jsonObject = <span class="keyword">new</span> JSONObject(<span class="keyword">new</span> LinkedHashMap<>());</span><br><span class="line"> jsonObject.put(<span class="string">"普通字符串"</span>, stringName);</span><br><span class="line"> jsonObject.put(<span class="string">"map - key"</span>, personName);</span><br><span class="line"> jsonObject.put(<span class="string">"map - value"</span>, personAge);</span><br><span class="line"> <span class="keyword">return</span> ResultGenerator.genSuccessResult(jsonObject, <span class="string">"获取 yml 文件配置的数据"</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="Environment">Environment</h3>
<p>只注入一次即可,使用时需要指定属性名。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Resource</span></span><br><span class="line"><span class="keyword">private</span> Environment environment;</span><br><span class="line"></span><br><span class="line"><span class="meta">@RequestMapping("/getConfigAttribute")</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> Result <span class="title">getString</span><span class="params">()</span> </span>{</span><br><span class="line"> System.out.println(environment.getProperty(<span class="string">"msg1"</span>));</span><br><span class="line"> System.out.println(environment.getProperty(<span class="string">"msg2"</span>));</span><br><span class="line"> <span class="keyword">return</span> ResultGenerator.genSuccessResult(<span class="string">"hello"</span>);</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h3 id="ConfigurationProperties">@ConfigurationProperties</h3>
<p>配置内容和对象绑定。</p>
<div class="tabs" id="test"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test-1">新建实体类</button></li><li class="tab"><button type="button" data-href="#test-2">Controller 测试</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test-1"><p>注解 <code>@ConfigurationProperties</code> 必须要指定前缀,否则会识别到其他同名的属性。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Component</span></span><br><span class="line"><span class="meta">@ConfigurationProperties(prefix = "person")</span></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Person</span> </span>{</span><br><span class="line"></span><br><span class="line"> <span class="keyword">private</span> String name;</span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">int</span> age;</span><br><span class="line"> <span class="keyword">private</span> String[] address;</span><br><span class="line"></span><br><span class="line"> <span class="comment">// 省去 getter/setter 和 toString() </span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test-2"><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Resource</span></span><br><span class="line"><span class="keyword">private</span> Person person;</span><br><span class="line"></span><br><span class="line"><span class="meta">@RequestMapping("/getConfigAttribute")</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> Result <span class="title">getString</span><span class="params">()</span> </span>{</span><br><span class="line"> JSONObject jsonObject = <span class="keyword">new</span> JSONObject(<span class="keyword">new</span> LinkedHashMap<>());</span><br><span class="line"> jsonObject.put(<span class="string">"person"</span>, person);</span><br><span class="line"> <span class="keyword">return</span> ResultGenerator.genSuccessResult(jsonObject, <span class="string">"获取 yml 文件配置的数据"</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div>
<h2 id="profile">profile</h2>
<p>动态切换开发、测试、生产环境的配置文件。</p>
<p>yml 一个文件下配置多个环境时,必须使用 <code>---</code> 分隔。</p>
<h3 id="配置和激活方式">配置和激活方式</h3>
<ul>
<li>
<p>配置文件</p>
<div class="tabs" id="test4"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test4-1">初始配置文件</button></li><li class="tab"><button type="button" data-href="#test4-2">创建新的配置文件</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><p>此处指定生效的配置文件为 dev 后缀。</p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8081</span></span><br><span class="line"></span><br><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">profiles:</span></span><br><span class="line"> <span class="attr">active:</span> <span class="string">dev</span></span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-2"><p>文件名为:<strong>application-dev.yml</strong></p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8082</span></span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div>
</li>
<li>
<p>虚拟机参数</p>
<div class="tabs" id="test4"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test4-1">配置文件</button></li><li class="tab"><button type="button" data-href="#test4-2">IDEA配置虚拟机参数</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><p>文件名为:<strong>application.yml</strong></p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8083</span></span><br><span class="line"></span><br><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">config:</span></span><br><span class="line"> <span class="attr">activate:</span></span><br><span class="line"> <span class="attr">on-profile:</span> <span class="string">test1</span></span><br><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8084</span></span><br><span class="line"></span><br><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">config:</span></span><br><span class="line"> <span class="attr">activate:</span></span><br><span class="line"> <span class="attr">on-profile:</span> <span class="string">test2</span></span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-2"><p>虚拟机参数:<code>-Dspring.profiles.active=test1</code></p>
<p><img src="https://raw.githubusercontent.com/LazyLutra/imgBed/main/profileExample.png" alt="虚拟机参数配置示例"></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div>
</li>
<li>
<p>命令行参数</p>
<div class="tabs" id="test4"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test4-1">配置文件</button></li><li class="tab"><button type="button" data-href="#test4-2">命令行参数</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><p>文件名为:<strong>application.yml</strong></p>
<figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8083</span></span><br><span class="line"></span><br><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">config:</span></span><br><span class="line"> <span class="attr">activate:</span></span><br><span class="line"> <span class="attr">on-profile:</span> <span class="string">test1</span></span><br><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">server:</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">8084</span></span><br><span class="line"></span><br><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">config:</span></span><br><span class="line"> <span class="attr">activate:</span></span><br><span class="line"> <span class="attr">on-profile:</span> <span class="string">test2</span></span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-2"><p>命令行参数或者在命令行启动项目 jar 包时使用该命令:<code>--spring.profiles.active=test2</code>。</p>
<p><img src="https://raw.githubusercontent.com/LazyLutra/imgBed/main/profileExample2.png" alt="命令行参数配置示例"></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div>
</li>
</ul>
<h2 id="内部配置加载顺序">内部配置加载顺序</h2>
<blockquote>
<p>注意:<br>
1. 同级目录下存在两个同名配置文件时,优先读取 properties。<br>
2. 存在多个配置文件时为互补的关系,高优先级文件中没有的部分会由优先级文件的配置补充。</p>
</blockquote>
<p>按照优先级由高到低排列:</p>
<ol>
<li><em>file:./config/</em> 当前项目下的 config 目录</li>
<li><em>file:./</em> 当前项目的根目录</li>
<li><em>classpath:./config/</em> classpath 下的 config 目录</li>
<li><em>classpath: classpath</em> 的根目录</li>
</ol>
<h2 id="外部配置加载顺序">外部配置加载顺序</h2>
<p>官方文档位置:<a target="_blank" rel="noopener" href="https://docs.spring.io/spring-boot/docs/2.6.7/reference/htmlsingle/#features.external-config">Spring Boot Reference Documentation</a></p>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">文章作者: </span><span class="post-copyright-info"><a href="mailto:undefined">huy</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">文章链接: </span><span class="post-copyright-info"><a href="http://example.com/45852.html">http://example.com/45852.html</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自 <a href="http://example.com" target="_blank">征蓬</a>!</span></div></div><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/SpringBoot/">SpringBoot</a></div><div class="post_share"><div class="social-share" data-image="/pics/scenery/02.jpg" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://jsdelivr.pai233.top/npm/social-share.js/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://jsdelivr.pai233.top/npm/social-share.js/dist/js/social-share.min.js" defer></script></div></div><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span>相关推荐</span></div><div class="relatedPosts-list"><div><a href="/11802.html" title="Bean的加载和控制"><img class="cover" src="/pics/scenery/03.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-05-02</div><div class="title">Bean的加载和控制</div></div></a></div><div><a href="/48587.html" title="SpringBoot(一):日志框架配置"><img class="cover" src="/pics/scenery/03.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2021-01-29</div><div class="title">SpringBoot(一):日志框架配置</div></div></a></div><div><a href="/35740.html" title="SpringBoot(七):Application文件配置"><img class="cover" src="/pics/scenery/01.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-01-20</div><div class="title">SpringBoot(七):Application文件配置</div></div></a></div><div><a href="/23140.html" title="SpringBoot(三):数据库"><img class="cover" src="/pics/scenery/18.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2021-02-10</div><div class="title">SpringBoot(三):数据库</div></div></a></div><div><a href="/3737.html" title="SpringBoot(五):Swagger2配置和服务器部署"><img class="cover" src="/pics/scenery/15.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2021-12-09</div><div class="title">SpringBoot(五):Swagger2配置和服务器部署</div></div></a></div><div><a href="/4811.html" title="SpringBoot(八):Thymeleaf基础功能"><img class="cover" src="/pics/scenery/03.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-02-03</div><div class="title">SpringBoot(八):Thymeleaf基础功能</div></div></a></div></div></div></div><div class="aside-content" id="aside-content"><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%8C%BA%E5%88%AB"><span class="toc-number">1.</span> <span class="toc-text">配置文件区别</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#YML-YAML-%E8%AF%AD%E6%B3%95%E5%92%8C%E6%A0%BC%E5%BC%8F"><span class="toc-number">2.</span> <span class="toc-text">YML/YAML 语法和格式</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%AF%AD%E6%B3%95%E8%A6%81%E6%B1%82"><span class="toc-number">2.1.</span> <span class="toc-text">语法要求</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F"><span class="toc-number">2.2.</span> <span class="toc-text">数据格式</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%8E%B7%E5%8F%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9"><span class="toc-number">3.</span> <span class="toc-text">获取配置文件内容</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#application-yml-%E9%85%8D%E7%BD%AE%E7%9A%84%E6%95%B0%E6%8D%AE"><span class="toc-number">3.1.</span> <span class="toc-text">application.yml 配置的数据</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Value"><span class="toc-number">3.2.</span> <span class="toc-text">@Value</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Environment"><span class="toc-number">3.3.</span> <span class="toc-text">Environment</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#ConfigurationProperties"><span class="toc-number">3.4.</span> <span class="toc-text">@ConfigurationProperties</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#profile"><span class="toc-number">4.</span> <span class="toc-text">profile</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%85%8D%E7%BD%AE%E5%92%8C%E6%BF%80%E6%B4%BB%E6%96%B9%E5%BC%8F"><span class="toc-number">4.1.</span> <span class="toc-text">配置和激活方式</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%86%85%E9%83%A8%E9%85%8D%E7%BD%AE%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F"><span class="toc-number">5.</span> <span class="toc-text">内部配置加载顺序</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%A4%96%E9%83%A8%E9%85%8D%E7%BD%AE%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F"><span class="toc-number">6.</span> <span class="toc-text">外部配置加载顺序</span></a></li></ol></div></div></div></div></main><footer id="footer" style="background-image: url('/pics/scenery/02.jpg')"><div id="footer-wrap"><div class="copyright">©2021 - 2022 By huy</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><div class="search-dialog__title" id="local-search-title">本地搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div></div><hr/><div id="local-search-results"></div><span class="search-close-button"><i class="fas fa-times"></i></span></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"></div><script defer="defer" id="ribbon" src="https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="false" data-click="false"></script><script id="click-heart" src="https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/click-heart.min.js" async="async" mobile="false"></script></div><!-- hexo injector body_end start --><script async src="//at.alicdn.com/t/font_2032782_8d5kxvn09md.js"></script><!-- hexo injector body_end end --></body></html>