最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中如何使用@Value注解實現(xiàn)給Bean屬性賦值

 更新時間:2021年08月16日 11:30:36   作者:Code0cean  
這篇文章主要介紹了Spring中如何使用@Value注解實現(xiàn)給Bean屬性賦值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

屬性賦值

只用Spring注解開發(fā)的時候,可以使用@Value搭配@PropertySource注解進行給Bean的屬性進行賦值。

@Value

@Value注解的定義:

@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Value {
 /**
  * The actual value expression: for example {@code #{systemProperties.myProp}}.
  */
 String value();
}

可以看到@Value注解接受的參數(shù)只能是字符串,所以使用時參數(shù)都需要帶上雙引號。并且可以在屬性,方法,參數(shù)等位置上標注。value屬性支持以下三種類型:

基本數(shù)據(jù)類型,包括String,int,boolean等類型。

SpEL,#{}的形式即表示使用SpEL表達式,一般用于獲取環(huán)境中其他bean的屬性,當使用Elivis運算符“表達式1?:表達式2”,比如#{ “obj.property? :default_value” }形式時,這里的obj是取當前容器中的對象,default_value就是前面的值為空時的默認值。

在主配置類中通過@PropertySource注解加載配置文件,然后通過${ property : default_value}的形式取配置文件中的值,其中default_value表示前面的值為空時的默認值。

測試

1.在添加了Spring依賴的Maven項目中創(chuàng)建

以下兩個實體類Student類和Teacher類

public class Teacher {
 public int id;
 public String name;
 
 public Teacher() {
  // TODO Auto-generated constructor stub
  System.out.println("teacher-----創(chuàng)建");
 }
 
 
 public Teacher(int id, String name) {
  super();
  this.id = id;
  this.name = name;
 } 
//省略getter和setter方法
}

在Student類中使用${}取配置文件的值,#{}取容器中的teacher對象的name屬性

public class Student{
 
 @Value("1")
 private int id;
 @Value("${student.name}")
 private String name;
 @Value("${student.address:北京}")
 private String address;
 @Value("#{teacher.name?:'老子'}")
 private String teacherName;
 @Override
 public String toString() {
  return "Student [id=" + id + ", name=" + name + ", address=" + address + ", teacherName=" + teacherName + "]";
 }
//省略getter和setter方法
}

2.在resources目錄下創(chuàng)建一個配置文件person.properties

添加以下值:

student.name=張三
person.address=廣州市

3.創(chuàng)建配置類

使用@PropertySource注解讀取外部配置文件person.properties中的key/value保存到運行的環(huán)境變量中。

@Configuration
@PropertySource("person.properties")
public class SpringConfig2 { 
    @Bean
 public Student student() {
  return new Student();  
 }
    @Bean
 public Teacher teacher() {
  return new Teacher(2,"老李");
 }
}

4.創(chuàng)建測試類進行測試

編寫代碼獲取容器中的id為student的bean和直接獲取配置環(huán)境的屬性值。

public class IoCTest {
 @Test
 public void test() {
  //獲取Spring的IOC容器
  AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig2.class);
  //從容器中獲取bean
       Student stu = (Student) applicationContext.getBean("student");
       System.out.println(stu);   
     //獲取環(huán)境變量
  ConfigurableEnvironment environment = applicationContext.getEnvironment();
  String property = environment.getProperty("person.address");
  System.out.println(property);
  //關(guān)閉容器
  applicationContext.close();
 }
}

5.測試結(jié)果:

在這里插入圖片描述

如何給Bean的屬性賦值(注入)

1.通過構(gòu)造方法設(shè)置值。

2.設(shè)置注入(通過set方法)

通過property標簽(內(nèi)部是通過調(diào)用類的set方法將值注入)

在這里插入圖片描述

在這里插入圖片描述

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Apache?log4j2-RCE?漏洞復(fù)現(xiàn)及修復(fù)建議(CVE-2021-44228)

    Apache?log4j2-RCE?漏洞復(fù)現(xiàn)及修復(fù)建議(CVE-2021-44228)

    Apache?Log4j2是一款Java日志框架,大量應(yīng)用于業(yè)務(wù)系統(tǒng)開發(fā)。2021年11月24日,阿里云安全團隊向Apache官方報告了Apache?Log4j2遠程代碼執(zhí)行漏洞(CVE-2021-44228),本文給大家介紹Apache?log4j2-RCE?漏洞復(fù)現(xiàn)(CVE-2021-44228)的相關(guān)知識,感興趣的朋友一起看看吧
    2021-12-12
  • 一篇文章告訴你如何在Java數(shù)組中插入一個字符

    一篇文章告訴你如何在Java數(shù)組中插入一個字符

    本篇文章主要介紹了Java數(shù)組中插入一個字符的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-10-10
  • Spring中基于Java的配置@Configuration和@Bean用法詳解

    Spring中基于Java的配置@Configuration和@Bean用法詳解

    這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個配置類(例如SpringConfig)來對bean進行配置。,需要的朋友可以參考下
    2019-06-06
  • Java應(yīng)用CPU使用率過高排查方式

    Java應(yīng)用CPU使用率過高排查方式

    這篇文章主要介紹了Java應(yīng)用CPU使用率過高排查方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java代碼實現(xiàn)隨機生成漢字的方法

    Java代碼實現(xiàn)隨機生成漢字的方法

    今天小編就為大家分享一篇關(guān)于Java代碼實現(xiàn)隨機生成漢字的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java方法的返回值及注意事項小結(jié)

    Java方法的返回值及注意事項小結(jié)

    這篇文章主要介紹了Java方法的返回值及注意事項,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Springboot利用Redis實現(xiàn)接口冪等性攔截

    Springboot利用Redis實現(xiàn)接口冪等性攔截

    這篇文章主要為大家介紹了Springboot如何利用Redis實現(xiàn)接口冪等性攔截。本文將通過自定義注解+redis+攔截器+MD5?實現(xiàn),感興趣的可以了解一下
    2022-06-06
  • java自定義類加載器代碼示例

    java自定義類加載器代碼示例

    這篇文章主要介紹了java自定義類加載器代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 詳解Java雙軸快速排序算法

    詳解Java雙軸快速排序算法

    在排序算法中,快速排序是占比非常多的一環(huán),但是快速排序其思想一直被考察研究,也有很多的優(yōu)化方案。這里主要講解雙軸快速排序的思想和實現(xiàn)
    2021-06-06
  • java數(shù)據(jù)結(jié)構(gòu)與算法之簡單選擇排序詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法之簡單選擇排序詳解

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之簡單選擇排序,結(jié)合實例形式分析了選擇排序的原理、實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05

最新評論

四平市| 凤翔县| 车致| 乌鲁木齐县| 龙陵县| 湘阴县| 西乌| 湟中县| 桐庐县| 兴业县| 特克斯县| 黑水县| 吴旗县| 石狮市| 枣阳市| 蒙自县| 金平| 醴陵市| 周口市| 平果县| 紫金县| 栾城县| 清苑县| 左云县| 平泉县| 娄烦县| 大同县| 娱乐| 鲜城| 兰坪| 临江市| 河津市| 扎赉特旗| 阜新市| 桃园市| 大理市| 韶山市| 平和县| 抚顺县| 尼勒克县| 台东县|