1、熱部署
修改完代碼,想讓SpringBoot自動加載我們修改的內容(pom.xml添加依賴)
<!-- spring-boot的開發工具,可以在修改代碼時,不需要手動重啟服務器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
2、 配置文件:Properties和YAML
SpringBoot是基於約定的,所以很多配置都有默認值,但如果想使用自己的配置替換默認配置的話,
就可以使用application.properties或者application.yml/application.yaml(官方推薦使用的格式)進行配置。
SpringBoot默認會從Resources目錄下加載application.properties或application.yml(application.yaml)文件
Application屬性文件:按優先級排序,位置高的將覆蓋位置低的
# tomcat 端口號
server.port=18081
# 配置項目所在的根目錄
server.servlet.context-path=/springboot-demo02
yml配置文件
簡介:
YML文件格式是YAML (YAML Aint Markup Language)編寫的文件格式,YAML是一種直觀的能夠被電腦識別的的數據數據序列化格式,並且容易被人類閱讀,容易和腳本語言交互的,可以被支持YAML庫的不同的編程語言程序導入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以數據為核心的,比傳統的xml方式更加簡潔
server:
port: 8899
冒號(:)與value之間必須有一個空格,另起一行時盡量不要用tab,推薦使用空格空行
properties文件與yml文件之間的區別:
- properties文件中,配置屬性的方式是key=value的方式
- 在yml文件中,配置屬性的方式是: key: value
application.properties的配置方式:
server.port=8999
yml文件的配置方式:
server:
port: 8899
將yml與properties對比之后發現,yml最大的好處在於其擁有天然的樹狀結構,所以着手嘗試將properties文件更改為yml文件,發現了幾個要注意的地方:
- 1、在properties文件中是以”.”進行分割的, 在yml中是用”:”進行分割;
- 2、yml的數據格式和json的格式很像,都是K-V格式,並且通過”:”進行賦值;
- 3、在yml中縮進一定不能使用TAB,否則會報很奇怪的錯誤;(縮進特么只能用空格!!!!)
- 4、每個k的冒號后面一定都要加一個空格;
在線的properties文件與yml文件的轉換:https://www.toyaml.com/index.html
yml自定義屬性:
application.yml
user:
id: 1001
username: laosan
controller.java
@Controller
public class controller {
@Value("${user.id}")
private Integer id;
@Value("${user.username}")
private String usernmae;
配置隨機值
通過${random}來產生int值,long值或者String字符串,來支持屬性的隨機值.
yml中
#隨機字符串
suke.secret=${random.value}
#隨機int
suke.number=${random.int}
#隨機long
suke.bignumber=${random.long}
#10以內的隨機數
suke.number.less.than.ten=${random.int(10)}
#12-65的隨機數
suke.number.in.range=${random.int[12,65]}
讀取使用注解:@Value( "${suke.secret}")
屬性占位符
當application.properties里的值被使用時,它們會被存在的Environment過濾,所以你能夠引用先前定義的值(比如,系統屬性)
suke.name=www.suke.com
suke.desc=${suke.name} is a domain name
最后suke.desc的值是: www.suke.com is a domin name
配置綁定對象,數組
user.java實體類:
@Data @ToString @Component @ConfigurationProperties(prefix = "user")//綁定配置類中的user屬性 public class User { private Integer id; private String username; private Integer age; private Date nowtime = new Date(); private String random; private List<Integer> list = new ArrayList<>(); private List<User> users = new ArrayList<>(); }
如果@ConfigurationProperties(prefix = "user") 報警告
//解決這個警告,我們只需要配一個依賴,點擊提示自動生成 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
application.yml配置文件
server: port: 8899 spring: jackson: time-zone: Asia/Shanghai //時區時間 date-format: yyyy-MM-dd HH:mm:ss //顯示日期格式
#json對屬性值為null 忽略
default-property-inclusion: NON_NULL
user: id: 1002 username: zhangsan age: 18 random: ${random.value} //隨機生成一個String隨機數 list: - 123 //集合中的第一個值 - 234 - 345 users: - id: 1003 //對象集合中的第一個對象 username: lisi age: 28 random: ${random.value} - id: 1004 username: wangwu age: 38 random: ${random.value}
測試類:
@Autowired private User user; @RequestMapping("hello") @ResponseBody public User helloTest() { System.out.println(user); return user; }
自定義配置文件@propertySources
application.properties文件中,但是在一些場景下,比如某個配置項比較多時,為了方便區分,我們會分開存放
可使用@propertySources設置數組,引入多個文件.