<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在【Spring學習筆記(三)】已經講了怎麼注入基本資料型別和參照資料型別,接下來介紹如何注入比較特殊的資料型別——集合
集合注入,用法也很簡單,只需要在 Bean 標籤下的 <property>
或<constructor-arg>
元素中新增以下集合的標籤,再通過value或者ref進行屬性注入
標籤 | 說明 |
---|---|
<list> | 用於注入 list 集合,允許重複 |
<set> | 用於注入 set集合,不允許重複 |
<map> | 用於注入 key-value 的map集合, key 和 value 可以是任意型別 |
<props> | 用於注入 key-value 的properties集合,key 和 value 必須是是字串型別 |
注意: List的底層也是通過陣列實現的,所以<list>
和<array>
標籤是可以混用
1.建立一個Collection類和Dept類,程式碼如下
/*Collection類*/ public class Collection { //1.陣列 private int[] array; //2.list集合 private List<Dept> list; //3。set集合 private Set<Dept> set; //4.map集合 private Map<String, String> map; //5.properties集合 private Properties properties; //列印各個集合 public void fmt() { System.out.println("列印array:" + Arrays.toString(array)); System.out.println("列印List:" + list); System.out.println("列印Set:" + set); System.out.println("列印Map:" + map); System.out.println("列印Properties:" + properties); } -----省略setter方法----- } /*Dept類*/ public class Dept { //部門編號 private int deptNo; //部門名稱 private String deptName; @Override public String toString() { return "Dept{" + "deptNo=" + deptNo + ", deptName='" + deptName + ''' + '}'; } -----省略setter方法----- }
2.編寫spring組態檔
<!--部門類屬性注入--> <bean id="dept" class="com.bighorn.pojo.Dept"> <property name="deptNo" value="1"/> <property name="deptName" value="後端組"/> </bean> <!--Collection類屬性注入--> <bean id="collection" class="com.bighorn.pojo.Collection"> <!--陣列型別--> <property name="array"> <array> <value>114514</value> <value>114514</value> <value>114514</value> </array> </property> <!--List 型別--> <property name="list"> <list> <ref bean="dept"/> <ref bean="dept"/> <ref bean="dept"/> </list> </property> <!--Set 型別--> <property name="set"> <set> <ref bean="dept"/> <ref bean="dept"/> <ref bean="dept"/> </set> </property> <!--Map 型別--> <property name="map"> <map> <entry key="name" value="bighorn"/> <entry key="age" value="18"/> <entry key="sex" value="man"/> </map> </property> <!--Properties 型別--> <property name="properties"> <props> <prop key="username">root</prop> <prop key="password">123456</prop> </props> </property> </bean>
3.編寫執行程式
public static void main(String[] args) { //獲取IoC容器 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //從容器中獲取物件 Collection collection = context.getBean("collection", Collection.class); //呼叫方法列印各個集合 collection.fmt(); }
執行結果如下
Spring 在 Bean 與 Bean 之間建立依賴關係的行為稱為 “裝配”
Spring Bean 屬性注入 前面學習了,在 spring組態檔中通過 <constructor-arg>
和 <property>
中的 ref
屬性,手動維護 Bean 與 Bean 之間的依賴關係的,即手動裝配
手動裝配圖
如果容器中Bean很多,依賴關係又非常複雜,此時手動裝配就略顯吃力且繁瑣了,所以Spring 框架為我們提供了 “自動裝配” 功能,提高開發效率。
Spring 自動裝配:Spring IoC容器
根據自動裝配方式,為指定的 Bean 從應用上下文(AppplicationContext 容器
)自動查詢並自動注入它所依賴的 Bean。
Spring 預設不支援自動裝配的。使用自動裝配,則需要對 Spring XML 組態檔中 <bean> 元素的 autowire 屬性進行設定,此時就不需要ref屬性了。
屬性值 | 說明 |
---|---|
byName | 按名稱自動裝配。 Bean 的 id 或 name 屬性值與這個物件屬性的名稱相同 |
byType | 按型別自動裝配。 Bean 的 class 屬性值與這個物件屬性的型別相匹配 |
constructor | 按構造器引數自動裝配。 |
default | 預設採用上一級元素 <beans> 設定的自動裝配方式(default-autowire)進行裝配。 |
no | 預設值,表示不使用自動裝配。 |
1.建立員工類Employee和部門類Dept,新增各個成員變數的setter方法
/*員工類Employee*/ public class Employee { //員工編號 private String empNo; //員工姓名 private String empName; //部門資訊 private Dept dept; //各個屬性的setter方法 public void setEmpNo(int empNo) { this.empNo = empNo; } public void setEmpName(String empName) { this.empName = empName; } public void setDept(Dept dept) { this.dept = dept; } ----省略toString方法------ } /*部門類Dept*/ public class Dept { //部門編號 private String deptNo; //部門名稱 private String deptName; //各個屬性的setter方法 public void setDeptNo(int deptNo) { this.deptNo = deptNo; } public void setDeptName(String deptName) { this.deptName = deptName; } ----省略toString方法------ }
2.編寫spring組態檔
<!--部門類屬性注入--> <bean id="dept" class="com.bighorn.pojo.Dept"> <property name="deptNo" value="2"/> <property name="deptName" value="前端組"/> </bean> <!--員工類屬性注入--> <bean id="employee" class="com.bighorn.pojo.Employee" autowire="byType"> <property name="empNo" value="114514"/> <property name="empName" value="lzh"/> </bean>
3.編寫執行程式
public static void main(String[] args) { //獲取IoC容器 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //從容器中獲取物件 Employee employee = context.getBean("employee", Employee.class); System.out.println(employee); }
結果如下圖
以上就是詳解Spring Bean的集合注入和自動裝配的詳細內容,更多關於Spring Bean集合注入 自動裝配的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45