1. 程式人生 > >spring之物件屬性的注入和物件注入

spring之物件屬性的注入和物件注入

這篇是接上一篇文章的後續。

在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>