springboot(2)——應用配置和熱部署
阿新 • • 發佈:2018-11-01
《二》、應用配置和熱部署
一、application應用配置
Idea新建的專案預設配置檔案為application.properties
- 1、我們修改它的字尾為
application.yml
,
因為xx.yml格式檔案級聯寫法比較省事等
# application.yml啟用application-dev.yml開發配置
spring:
profiles:
active: dev
server:
port: 8899
- 2、新建
application-dev.yml
和application-prod.yml
二、資原始檔屬性配置
1、通過註解將配置檔案的值注入到java程式碼中
- 1、在application.yml中
name: eric
age: 18
# 配置中使用當前配置
content: "name: ${name}, age: ${age}"
- 2、java程式碼中註解繫結
// org.springframework.beans.factory.annotation.Value
@Value("${age}")
private Integer age;
@Value("${name}" )
private String name;
@Value("${content}")
private String content;
2、封裝成一個屬性物件
- 1、在
application.yml
中配置一組物件屬性
person:
name: eric
age: 18
- 2、
PersonProperties.java
類繫結配置物件屬性
@Data // lombok省略get和set
@Component // 使用時對應@Autowired註解
@ConfigurationProperties(prefix = "person")
public class PersonProperties {
private String name;
private Integer age;
}
- 3、使用物件配置的值
@Autowired
private PersonProperties personProperties;
// 使用, personProperties.getName() + personProperties.getAge();
三、開發環境下熱部署
<!-- 熱部署 -->
<!-- devtools可以實現頁面熱部署(即頁面修改後會立即生效,
這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false、
spring.freemarker.cache=false來實現) -->
<!-- 實現類檔案熱部署(類檔案修改後不會立即生效),實現對屬性檔案的熱部署。 -->
<!-- 即devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),
注意:因為其採用的虛擬機器機制,該項重啟是很快的 -->
<!-- (1)base classloader (Base類載入器):載入不改變的Class,例如:第三方提供的jar包。 -->
<!-- (2)restart classloader(Restart類載入器):載入正在開發的Class。 -->
<!-- 為什麼重啟很快,因為重啟的時候只是載入了在開發的Class,沒有重新載入第三方的jar包。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true, 依賴不會傳遞, 該專案依賴devtools;
之後依賴boot專案的專案如果想要使用devtools, 需要重新引入 -->
<optional>true</optional>
</dependency>
yml配置環境下如下:
1、關閉freemarker模板快取
spring.freemarker.cache = false
2、熱部署生效
spring.devtools.restart.enabled = true
- 3、
additional-paths
指定目錄下更改檔案會啟動熱部署restart
spring:
freemarker:
cache: false
devtools:
restart:
enabled: true
additional-paths: /src/main/java
- 4、建議更改資原始檔後手動重啟