spring之物件屬性的注入和物件注入
阿新 • • 發佈:2019-02-10
這篇是接上一篇文章的後續。
在spring中,常用屬性的注入有三種。
一:通過構造方法來注入
①.首先在User類裡面寫一個構造方法,注意:此構造方法需和你xml宣告bean時所用的相同。
public class User {
private String name;
public User(String name) {
this.name = name;
}
public void add() {
System.out.println("add------------");
}
}
②:然後在xml宣告這個bean
<!-- 4建立一個帶有name屬性的user物件 --> <bean id="user2" class="cn.ioc.User"> <!-- name為屬性的名稱,value為屬性具體的值 --> <constructor-arg name="user2" value="小明"></constructor-arg> </bean>
③:在測試類寫如下程式碼
User user2 = (User) context.getBean("user2");
System.out.println(user2.getName());;
user2.add();
得到結果為:
可知,name屬性已經注入進去。
二:通過set方法來注入
①.首先在User類裡面寫一個set方法
public void setName(String name) {
this.name = name;
}
②:在xml裡面宣告這個bean
<!-- 使用set方法來注入bean的屬性 --> <bean id="user3" class="cn.ioc.User"> <!-- name為屬性的名稱,value為屬性具體的值 --> <property name="name" value="張三"></property> </bean>
③:在測試類中寫如下程式碼:
User user3 = (User) context.getBean("user3");
System.out.println(user3.getName());
user3.add();
執行結果為:
總結:兩種方法都可以對bean的屬性進行注入,具體的場景下用具體的注入方式。
三:p名稱空間
名稱空間注入首先需要在約束中加入
xmlns:p="http://www.springframework.org/schema/p"
然後在xml中即可這樣寫
<!-- P名稱空間注入 p:後面跟的則是這個屬性,=號後面是屬性的值--> <bean id="user4" class="cn.ioc.User" p:name="P名稱空間注入"></bean>
在spring中,物件的注入常用的為set注入和註解注入。
set注入物件的方法和上文提到的set注入屬性的方法大致相同,不同的點是注入的東西,不同xml中有所不同,下面我列出來。
在set注入屬性的時候 name 後面的是value——即對應的值。而在set注入物件的時候name後面是ref——即對應的其他bean的id
eg:將bean物件注入到User裡面
<!-- 將bean物件注入到User裡面 -->
<bean id="user4" class="cn.ioc.User">
<!-- 在User裡面注入bean3物件——相當於將bean3物件當成了User類的一個屬性 -->
<property name="bean3" ref="cn.bean.Bean1"></property>
</bean>