生活随笔
收集整理的這篇文章主要介紹了
spring框架学习(二)依赖注入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?spring框架為我們提供了三種注入方式,分別是set注入,構造方法注入,接口注入。接口注入不作要求,下面介紹前兩種方式。
1,set注入
? 采用屬性的set方法進行初始化,就成為set注入。
? ? 1)給普通字符類型賦值。
[java]?view plaincopy print?
public?class?User{?? ???privateString?username;?? ??? ???publicString?getUsername()?{?? ???????returnusername;?? ???}?? ???publicvoid?setUsername(String?username)?{?? ??????this.username=?username;?? ???}?? }??
? ?我們只需要提供屬性的set方法,然后去屬性文件中去配置好讓框架能夠找到applicationContext.xml文件的beans標簽。標簽beans中添加bean標簽,?指定id,class值,id值不做要求,class值為對象所在的完整路徑。bean標簽再添加property 標簽,要求,name值與User類中對應的屬性名稱一致。value值就是我們要給User類中的username屬性賦的值。
[html]?view plaincopy print?
<bean?id="userAction"class="com.lsz.spring.action.User"?>?? <span?style="white-space:pre">??</span><property?name="username"?value="admin"></property>?? </bean>??
? ?2)給對象賦值
?同樣提供對象的set方法
[java]?view plaincopy print?
public?class?User{?? ?????private?UserService?userservice;?? ?????public?UserServicegetUserservice()?{?? ??????????returnuser;?? ?????}?? ?????public?void?setUserservice(UserService?userservice){?? ?????????this.userservice=?userservice;?? ?????}?? }??
? ?配置文件中要增加UserService的bean標簽聲明及User對象對UserService引用。
[html]?view plaincopy print?
?? <bean?id="userService"?class="com.lsz.spring.service.UserService"></bean>?? ??? <bean?id="userAction"class="com.lsz.spring.action.User"?>?? ???<property?name="userservice"?ref="userService"></property>?? </bean>??
? 這樣配置,框架就會將UserService對象注入到User類中。
?
? 3)給list集合賦值
?同樣提供set方法
[java]?view plaincopy print?
public?class?User{?? ????privateList<String>?username;?? ????publicList<String>?getUsername()?{?? ????????returnusername;?? ????}?? ????publicvoid?setUsername(List<String>?username)?{?? ????????this.username=?username;?? ????}?? }??
[html]?view plaincopy print?
<bean?id="userAction"class="com.lsz.spring.action.User"?>?? ?????<propertynamepropertyname="username">?? ???????????<list>?? ???????????????<value>zhang,san</value>?? ???????????????<value>lisi</value>?? ???????????????<value>wangwu</value>?????????????????????????????????? ???????????????</list>?? ????</property>?? </bean>??
?
? 4)給屬性文件中的字段賦值
[java]?view plaincopy print?
public?class?User{?? ????privateProperties?props?;?? ????publicProperties?getProps()?{?? ????????returnprops;?? ????}?? ????publicvoid?setProps(Properties?props)?{?? ????????this.props=?props;?? ????}?? }??
[html]?view plaincopy print?
<bean>?? ????<propertynamepropertyname="props">?? ????????<props>?? ???????????<propkeypropkey="url">jdbc:oracle:thin:@localhost:orl</prop>?? ???????????<propkeypropkey="driverName">oracle.jdbc.driver.OracleDriver</prop>?? ???????????<propkeypropkey="username">scott</prop>?? ???????????<propkeypropkey="password">tiger</prop>?? ????????</props>?? ????</property>?? </bean>??
<prop>標簽中的key值是.properties屬性文件中的名稱
注意:
? 無論給什么賦值,配置文件中<property>標簽的name屬性值一定是和對象中名稱一致。
?
?
2構造方法注入
? ?1)構造方法一個參數
?
[java]?view plaincopy print?
public?class?User{?? ????privateString?usercode;?? ????publicUser(String?usercode)?{?? ????????this.usercode=usercode;?? ????}?? }??
[html]?view plaincopy print?
<bean?id="userAction"class="com.lsz.spring.action.User">?????????????????????????? ????<constructor-argvalueconstructor-argvalue="admin"></constructor-arg>?????????????????????????? </bean>??
? ?2)構造函數有兩個參數時
? 當參數為非字符串類型時,在配置文件中需要制定類型,如果不指定類型一律按照字符串類型賦值。
? 當參數類型不一致時,框架是按照字符串的類型進行查找的,因此需要在配置文件中制定是參數的位置
?
[html]?view plaincopy print?
<constructor-argvalueconstructor-argvalue="admin"index="0"></constructor-arg>?????????????????? <constructor-argvalueconstructor-argvalue="23"?type="int"index="1"></constructor-arg>?? ???
? 這樣制定,就是構造函數中,第一個參數為string類型,第二個參數為int類型
from:?http://blog.csdn.net/lishuangzhe7047/article/details/20740835
總結
以上是生活随笔為你收集整理的spring框架学习(二)依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。