SpringBoot注入數(shù)據(jù)的方式是什么

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

漢源網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

SpringBoot注入數(shù)據(jù)的方式是什么

關(guān)于數(shù)據(jù)校驗的部分代碼

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

“SpringBoot注入數(shù)據(jù)的方式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁題目:SpringBoot注入數(shù)據(jù)的方式是什么
路徑分享:http://m.kartarina.com/article16/gecgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航定制開發(fā)品牌網(wǎng)站制作、外貿(mào)建站、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
主站蜘蛛池模板: 久久久久久亚洲AV无码专区| 国产成人无码免费看片软件| 国产拍拍拍无码视频免费| 亚洲精品无码成人AAA片| 亚洲国产一二三精品无码| 亚洲成a人无码亚洲成av无码| 中文人妻无码一区二区三区| 无码乱码观看精品久久| 中文字幕精品三区无码亚洲| 亚洲AV无码成人精品区天堂| 大桥久未无码吹潮在线观看| 无码国产69精品久久久久网站| 一本色道无码不卡在线观看| 久久AV高潮AV无码AV| 亚洲国产成人无码av在线播放| 免费人妻无码不卡中文字幕18禁| 欲色aV无码一区二区人妻| 亚洲国产成人精品无码区在线秒播 | AV无码久久久久不卡网站下载| 国产精品一级毛片无码视频| 亚洲精品无码久久久久久| 亚洲VA中文字幕无码毛片| 国产成人精品无码播放| 性色av无码免费一区二区三区| 人妻少妇乱子伦无码专区| 一本久道中文无码字幕av| 最新无码人妻在线不卡| 色综合久久无码中文字幕| 国产成人综合日韩精品无码不卡| 国产精品无码翘臀在线观看| 69堂人成无码免费视频果冻传媒| 日韩精品人妻系列无码专区| 国产免费无码一区二区| 国产爆乳无码视频在线观看| 中文字幕丰满伦子无码| 亚洲人成网亚洲欧洲无码久久| 国产亚洲精品无码专区| av潮喷大喷水系列无码| 无码福利一区二区三区| 在线观看无码AV网址| 在线观看亚洲AV每日更新无码 |