Spring Boot中配置檔案中random以及佔位符的使用
阿新 • • 發佈:2018-11-23
1、隨機數
在Spring Boot 配置檔案中我們可以使用後隨機數random,語法如下:
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
下面通過例子進行學習:
- 創建於一個cat類
package cn.zhangyu.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework. context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "cat")
public class Cat {
private String name;
private int age;
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this .age = age;
}
}
- application.properties
cat.name=${random.value}
cat.age=${random.int}
- 測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot1ApplicationTests {
@Autowired
private Cat cat;
@Test
public void test(){
System.out.println(cat);
}
}
結果:Cat{name='eab61b74218a98f8af2526c83c9e0a08', age=-723867268}
2、佔位符獲取之前配置的值
我們再給貓加幾個屬性,看看如何使用佔位符
- application.properties
cat.name=小顧
cat.age=5
cat.nickName=${cat.name}
cat.birthday=${random.int}
- Cat
package cn.zhangyu.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "cat")
public class Cat {
private String name;
private int age;
private String nickName;
private String birthday;
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
", nickName='" + nickName + '\'' +
", birthday=" + birthday +
'}';
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
結果: Cat{name='小顧', age=5, nickName='小顧', birthday=1313024468} 可以看到佔位符有效
但是這並不是最佳實踐,我們繼續看看下面這種情況
cat.name=小顧
cat.age=5
cat.nickName=${cat.hello}
cat.birthday=${random.int}
如果在配置檔案中出現一個沒有過的屬性,會是什麼結果呢?
我們看看輸出結果Cat{name='小顧', age=5, nickName='${cat.hello}', birthday=981210833}
不會報錯,直接輸出了cat.hello。 有些情況下可能我們會學錯是很正常的,那麼我們可以加一個預設值。這是最好的寫法。
cat.name=小顧
cat.age=5
cat.nickName=${cat.hello:hello }cat
cat.birthday=${random.int}
結果:Cat{name='小顧', age=5, nickName='hello cat', birthday=1820983133}
如果在沒有值的情況下,我們可以指定預設值, :預設值
。