国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

8、spring依賴注入(DI)之參數歧義問題

2019-11-08 02:51:08
字體:
來源:轉載
供稿:網友

8、sPRing依賴注入(DI)之參數歧義問題

背景說明:當一個類中,包含有多個帶參數構造器,而且構造器的參數數量和類型都一致,但是位置不同,這時如果通過構造器進行依賴注入的話,可能會造成參數歧義(錯位傳參)問題。

讓我們看看下面的例子!

例子

Customer.java

package com.main.autowrite.DI;public class Customer { private String name; private String address; private int age; public Customer(String name, String address, int age) { this.name = name; this.address = address; this.age = age; } public Customer(String name, int age, String address) { this.name = name; this.age = age; this.address = address; } //getter and setter methods public String toString(){ return " name : " +name + "/n address : " + address + "/n age : " + age; }}

在bean.xml文件中的聲明如下:

<bean id="customer" class="com.main.autowrite.DI.Customer"> <constructor-arg> <value>jack</value> </constructor-arg> <constructor-arg> <value>1111111</value> </constructor-arg> <constructor-arg> <value>2222222</value> </constructor-arg> </bean>

測試方法以及結果:

@Test public void test(){ applicationContext context = new ClassPathXmlApplicationContext("com/main/autowrite/DI/bean.xml"); Customer customer = (Customer)context.getBean("customer"); System.out.println(customer.toString()); }

假設我們想要的是利用第二個構造函數進行傳參,這時的運行結果就不是我們想要的,所以就產生了參數歧義的問題

目標結果為: name : jack address:2222222 age : 1111111

但是實際結果為:

這里寫圖片描述


這時,通過在bean.xml配置文件中對參數進行類型的限定,就可以達到我們的目標效果!! 修改如下:

<bean id="customer" class="com.main.autowrite.DI.Customer"> <constructor-arg type="java.lang.String"> <value>jack</value> </constructor-arg> <constructor-arg type="int"> <value>1111111</value> </constructor-arg> <constructor-arg type="java.lang.String"> <value>2222222</value> </constructor-arg> </bean>

這時就可以消除參數歧義的問題,從而使用目標構造器進行傳參!!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘洛县| 澳门| 周口市| 江川县| 密云县| 绥化市| 耒阳市| 景泰县| 长乐市| 普兰县| 怀远县| 叙永县| 晴隆县| 历史| 江阴市| 招远市| 安阳县| 汤原县| 于都县| 吉安县| 冷水江市| 乃东县| 黔江区| 江都市| 全州县| 静海县| 桃源县| 富裕县| 嵩明县| 台江县| 临武县| 赤水市| 图片| 会同县| 新乡市| 尚志市| 敦煌市| 高密市| 龙海市| 潜江市| 昭苏县|