1.8 隨機(jī)數(shù)設(shè)置及參數(shù)間引用
?????????在Spring Boot配置文件中設(shè)置屬性時欧啤,除了可以像前面示例中顯示的配置屬性值外褪秀,還可以使用隨機(jī)值和參數(shù)間引用對屬性值進(jìn)行設(shè)置怀樟。下面,針對配置文件中這兩種屬性值的設(shè)置方式進(jìn)行講解?
?1.8.1隨機(jī)值設(shè)置
?????????在Spring Boot配置文件中筑舅,隨機(jī)值設(shè)置使用到了Spring Boot內(nèi)嵌的RandomValuePropertySource類座慰,對一些隱秘屬性值或者測試用例屬性值進(jìn)行隨機(jī)值注入 ?
?????????隨機(jī)值設(shè)置的語法格式為${random.xx},xx表示需要指定生成的隨機(jī)數(shù)類型和范圍翠拣,它可以生成隨機(jī)的整數(shù)版仔、uuid或字符串,示例代碼如下?
properties
my.secret=${random.value}???????? //配置隨機(jī)值
my.number=${random.int}?????????? //配置隨機(jī)整數(shù)
my.bignumber=${random.long}????? //配置隨機(jī)long類型數(shù)
my.uuid=${random.uuid}??????????? //配置隨機(jī)uuid類型數(shù)
my.number.less.than.ten=${random.int(10)}??? //配置小于10的隨機(jī)整數(shù)
my.number.in.range=${random.int[1024,65536]}
// 配置范圍在[1024,65536]之間的隨機(jī)整數(shù)
?????????上述代碼中心剥,使用RandomValuePropertySource類中random提供的隨機(jī)數(shù)類型邦尊,分別展示了不同類型隨機(jī)值的設(shè)置示例?
1.8.2參數(shù)間引用
?????????在Spring Boot配置文件中背桐,配置文件的屬性值還可以進(jìn)行參數(shù)間的引用优烧,也就是在后一個配置的屬性值中直接引用先前已經(jīng)定義過的屬性,這樣可以直接解析其中的屬性值了链峭。
使用參數(shù)間引用的好處就是畦娄,在多個具有相互關(guān)聯(lián)的配置屬性中,只需要對其中一處屬性預(yù)先配置弊仪,其他地方都可以引用熙卡,省去了后續(xù)多處修改的麻煩 ?
?????????參數(shù)間引用的語法格式為${xx},xx表示先前在配置文件中已經(jīng)配置過的屬性名励饵,示例代碼如下?
properties
app.name=MyApp
app.description=${app.name} is a Spring
Boot application
?????????上述參數(shù)間引用設(shè)置示例中驳癌,先設(shè)置了“app.name=MyApp”,將app.name屬性的屬性值設(shè)置為了MyApp役听;接著颓鲜,在app.description屬性配置中表窘,使用${app.name}對前一個屬性值進(jìn)行了引用 ?
?????????接下來,通過一個案例來演示使用隨機(jī)值設(shè)置以及參數(shù)間引用的方式進(jìn)行屬性設(shè)置的具體使用和效果甜滨,具體步驟如下 ?
?????????(1)打開Spring Boot項目resources目錄下的application.properties配置文件乐严,在該配置文件中分別通過隨機(jī)值設(shè)置和參數(shù)間引用來配置兩個測試屬性,示例代碼如下?
properties
# 隨機(jī)值設(shè)置以及參數(shù)間引用配置
tom.age=${random.int[10,20]}
tom.description=tom的年齡可能是${tom.age}
?????????在上述application.properties配置文件中衣摩,先使用隨機(jī)值設(shè)置了tom.age屬性的屬性值昂验,該屬性值設(shè)置在了[10,20]之間,隨后使用參數(shù)間引用配置了tom.description屬性 ?
????????(2)打開\項目的測試類艾扮,在該測試類中新增字符串類型的description屬性既琴,并將配置文件中的tom.description屬性進(jìn)行注入,然后新增一個測試方法進(jìn)行輸出測試泡嘴,示例代碼如下?
java
@Value("${tom.description}")
private String description;
@Test
public void placeholderTest() {
?????? System.out.println(description);
}
上述代碼中呛梆,通過@Value("${tom.description}")注解將配置文件中的tom.description屬性值注入到了對應(yīng)的description屬性中,在測試方法placeholderTest()中對該屬性值進(jìn)行了輸出打印磕诊。
執(zhí)行測試方法placeholderTest() 填物,查看控制臺輸出效果 ?
<img src="./images/image-20191225172004276.png"
alt="image-20191225172004276" style="zoom:80%;" />
?????????可以看出,測試方法placeholderTest()運(yùn)行成功霎终,并打印出了屬性description的注入內(nèi)容滞磺,該內(nèi)容與配置文件中配置的屬性值保持一致。接著莱褒,重復(fù)執(zhí)行測試方法placeholderTest()击困,查看控制臺輸出語句中顯示的年齡就會在[10,20]之間隨機(jī)顯示 ?
剛學(xué)了拉勾教育的《Java工程師高薪訓(xùn)練營》,看到剛學(xué)到的點(diǎn)就回答了广凸。希望拉勾能給我推到想去的公司阅茶,目標(biāo):字節(jié)!谅海!