1. 程式人生 > >Spring Boot中配置檔案中random以及佔位符的使用

Spring Boot中配置檔案中random以及佔位符的使用

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}
如果在沒有值的情況下,我們可以指定預設值, :預設值