亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot注入數據的方式是什么

發布時間:2021-07-06 10:34:00 來源:億速云 閱讀:159 作者:chen 欄目:大數據

本篇內容介紹了“SpringBoot注入數據的方式是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

application.properties

boot.name=liqingfeng
boot.age=28
boot.pswd=123456
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Value("${boot.name}")
    private String name;

    @Value("${boot.pswd}")
    private Integer pswd;

    @Value("${boot.age}")
    private Integer age;
}
@Component
@ConfigurationProperties(prefix = "boot")
@Data
public class User {

    private String name;
    private Integer age;
    private Integer pswd;
}
@Autowired
private Environment env;


@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Autowired
    private Environment env;

    @Test
    public void contextLoads() {

        System.out.println("名字:" + env.getProperty("boot.name")+ "年齡:" + env.getProperty("boot.age") +"密碼:" + env.getProperty("boot.pswd"));
    }

}
    @Value("注入普通字符串")
    private String normal;

    //關于屬性的KEY可以查看System類說明
    @Value("#{systemProperties['java.version']}")//-->使用了SpEL表達式
    private String systemPropertiesName; // 注入操作系統屬性

    @Value("#{T(java.lang.Math).random()*80}")//獲取隨機數
    private double randomNumber; //注入表達式結果

    @Value("#{1+2}")
    private double sum; //注入表達式結果 1+2的求和

    @Value("classpath:os.yaml")
    private Resource resourceFile; // 注入文件資源

    @Value("http://www.baidu.com")
    private Resource testUrl; // 注入URL資源

    @Value("#{st.name}")
    private String studentName;
#{...}和${...}的區別演示

A.${…}的用法
{}里面的內容必須符合SpEL表達式,通過@Value(“${app.name}”)可以獲取屬性文件中對應的值,但是如果屬性文件中沒有這個屬性,則會報錯。可以通過賦予默認值解決這個問題,如@Value("${app.name:胖先森}")

// 如果屬性文件沒有app.name,則會報錯
//  @Value("${app.name}")
//  private String name;

// 使用app.name設置值,如果不存在則使用默認值
@Value("${app.name:胖先森}")
private String name;

B.#{...}的用法
// SpEL:調用字符串Hello World的concat方法
@Value("#{'Hello World'.concat('!')}")
private String helloWorld;

// SpEL: 調用字符串的getBytes方法,然后調用length屬性
@Value("#{'Hello World'.bytes.length}")
private String helloWorldbytes;

C.#{...}和${...}混合使用
${...}和#{...}可以混合使用,如下文代碼執行順序:通過${server.name}從屬性文件中獲取值并進行替換,然后就變成了 執行SpEL表達式{‘server1,server2,server3’.split(‘,’)}。
// SpEL: 傳入一個字符串,根據","切分后插入列表中, #{}和${}配置使用(注意單引號,注意不能反過來${}在外面,#{}在里面)
@Value("#{'${server.name}'.split(',')}")
private List<String> servers;
在上文中在#{}外面,${}在里面可以執行成功,那么反過來是否可以呢${}在外面,#{}在里面,如代碼
// SpEL: 注意不能反過來${}在外面,#{}在里面,這個會執行失敗
@Value("${#{'HelloWorld'.concat('_')}}")
private List<String> servers2;
答案是不能。
因為spring執行${}是時機要早于#{}。
在本例中,Spring會嘗試從屬性中查找#{‘HelloWorld’.concat(‘_’)},那么肯定找到,由上文已知如果找不到,然后報錯。所以${}在外面,#{}在里面是非法操作

D.用法總結
#{…} 用于執行SpEl表達式,并將內容賦值給屬性
${…} 主要用于加載外部屬性文件中的值
#{…} 和${…} 可以混合使用,但是必須#{}外面,${}在里面
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
@Value獲取值和@ConfigurationProperties獲取值比較

SpringBoot注入數據的方式是什么

關于數據校驗的部分代碼

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
   //lastName必須是郵箱格式
    @Email
    private String lastName;

“SpringBoot注入數據的方式是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡城县| 普陀区| 鞍山市| 左贡县| 昌吉市| 安新县| 犍为县| 醴陵市| 兖州市| 京山县| 阜康市| 荣昌县| 中西区| 同江市| 绿春县| 彩票| 南通市| 习水县| 南开区| 广昌县| 宣城市| 高唐县| 洪雅县| 孟连| 城固县| 金湖县| 兰坪| 乌拉特前旗| 怀集县| 和平县| 柯坪县| 留坝县| 鹿泉市| 沂水县| 望城县| 昂仁县| 张家港市| 囊谦县| 黄山市| 东乡族自治县| 汉源县|