您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“SpringBoot注入數(shù)據(jù)的方式是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
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表達(dá)式 private String systemPropertiesName; // 注入操作系統(tǒng)屬性 @Value("#{T(java.lang.Math).random()*80}")//獲取隨機數(shù) private double randomNumber; //注入表達(dá)式結(jié)果 @Value("#{1+2}") private double sum; //注入表達(dá)式結(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表達(dá)式,通過@Value(“${app.name}”)可以獲取屬性文件中對應(yīng)的值,但是如果屬性文件中沒有這個屬性,則會報錯。可以通過賦予默認(rèn)值解決這個問題,如@Value("${app.name:胖先森}") // 如果屬性文件沒有app.name,則會報錯 // @Value("${app.name}") // private String name; // 使用app.name設(shè)置值,如果不存在則使用默認(rèn)值 @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表達(dá)式{‘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表達(dá)式,并將內(nèi)容賦值給屬性 ${…} 主要用于加載外部屬性文件中的值 #{…} 和${…} 可以混合使用,但是必須#{}外面,${}在里面
${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]}
關(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)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。