日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sping依赖注入

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sping依赖注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Sping依賴注入,簡單的說就是使用Spring來調用類中的構造函數給成員變量賦值。我們無法使用IOC來完全消除類之間的依賴關系,例如WEB應用中的業務層調用持久層。我們可以交由spring來維護這種依賴關系。依賴注入有多種方式,下面一一講解。

1.構造函數注入

顧名思義,就是使用類中的構造函數,給成員變量賦值。注意,賦值的操作不是我們自己做的,而是通過配置的方式,讓spring框架來為我們注入。具體代碼如下:

public class AccountService{private String name;private Integer age;private Date birthday;public AccountService(String name, Integer age, Date birthday){this.name = name;this.age = age;this.birthday = birthday;}public void saveAccount(){System.out.println(name + " " + age + " " + birthday);} }

使用這種方式需要在類中提供一個對應參數列表的構造函數。
使用到的標簽為constructor-arg 屬性有:

  • index:指定參數在構造函數參數列表中的索引位置
  • type:指定參數在構造函數中的數據類型
  • name:指定參數在構造函數中的名稱
  • value:賦給基本數據類型和String類型
  • ref:賦值給bean類型,這個bean類型必須在xml中配置
<bean id = "accountService" class="com.chester.service.impl.AccountService"><constructor-arg name="name" value="Tom"></constructor-arg><constructor-arg name="age" value="18"></constructor-arg><constructor-arg name="birthday" value="now"></constructor-arg> </bean><bean id="now" class="java.util.Date"></bean>

2.set方法注入

顧名思義,就是在類中提供需要注入成員的set方法。具體代碼如下:

public class AccountServiceImpl {private String name;private Integer age;private Date birthday;public void setName(String name) {this.name = name;}public void setAge(Integer age) {this.age = age;}public void setBirthday(Date birthday) {this.birthday = birthday;}public void saveAccount(){System.out.println(name + " " + age + " " + birthday);} }

使用這種方式需要在類中提供成員變量的set函數,這里要注意set函數的寫法,否則不能找到對應成員變量的set函數。
使用到的標簽為property 屬性有:

  • name:找的是類中set方法后面的部分
  • ref:給屬性賦值是其他bean類型的
  • value:給屬性賦值是基本數據類型和string類型的
<bean id="accountService" class="com.chester.service.impl.AccountServiceImpl"><property name="name" value="Tom"></property><property name="age" value="18"></property><property name="birthday" ref="now"></property></bean><bean id="now" class="java.util.Date"></bean>

這種方式也是實際開發用的比較多的方式。

3.使用p名稱空間注入數據(本質依舊是調用set方法)

此種方式是通過在xml中導入p名稱空間,使用p:propertylName來注入數據,它的本質仍然是調用類中的set方法實現注入功能。

java代碼部分和2.set方法注入一樣

xml寫法如下:

<bean id="accountService" class="com.chester.service.impl.AccountServiceImpl"p:name="test" p:age="18" p:birthday-ref="now"> </bean><bean id="now" class="java.util.Date"></bean>

4.注入集合屬性

顧名思義,就是給類中的集合成員傳值,它用的也是set方法注入的方式,只不過變量的數據類型都是集合。我們這里介紹注入數組,List,Set,Map,Properties。具體代碼如下:

public class AccountServiceImpl {private String[] myStrs;private List<String> myList;private Set<String> mySet;private Map<String, String> myMap;private Properties myProps;public void setMyStrs(String[] myStrs) {this.myStrs = myStrs;}public void setMyList(List<String> myList) {this.myList = myList;}public void setMySet(Set<String> mySet) {this.mySet = mySet;}public void setMyMap(Map<String, String> myMap) {this.myMap = myMap;}public void setMyProps(Properties myProps) {this.myProps = myProps;}public void saveAccount(){System.out.println(Arrays.toString(myStrs));System.out.println(myList);System.out.println(mySet);System.out.println(myMap);System.out.println(myProps);} } <bean id="accountService" class="com.chester.service.impl.AccountServiceImpl"><property name="myStrs"><set><value>AAA</value><value>BBB</value><value>CCC</value></set></property><property name="myList"><array><value>AAA</value><value>BBB</value><value>CCC</value></array></property><property name="mySet"><list><value>AAA</value><value>BBB</value><value>CCC</value></list></property><property name="myMap"><props><prop key="A">AAA</prop><prop key="B">BBB</prop><prop key="C">CCC</prop></props></property><property name="myProps"><map><entry key="A" value="AAA"></entry><!--or--><entry key="B"><value>BBB</value></entry></map></property></bean>

總結

以上是生活随笔為你收集整理的Sping依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。