spring構造器注入

spring set注入請看:http://blog.csdn.net/luckey_zh/article/details/46674113

一、聲明一個簡單的bean

直接來個角色bean

public class Roles {
	private int id;
	private String roleName;
	
	public Roles() {
	}
	public Roles(int id,String roleName) {
		this.id=id;
		this.roleName = roleName;
	}
	@Override
	public String toString() {
		return "Users [id=" + id + ", name=" + roleName + "]";
	}
}
spring配置
	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
		<constructor-arg value="1"/>
		<constructor-arg value="管理員"/>
	</bean>

在運行我們的測試方法

public class SpringTest {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		Roles u = (Roles)context.getBean("roles");
		System.out.println(u.toString());
	}
}

得到的結果是:

Users [id=1, name=管理員]


我們可以看出來,我沒有是去實例化Roles,也沒有set方法。實際上spring給我們去實例化了,<constructor-arg/>給我們bean賦值了。

在實際開發中,角色下面肯定會有用戶,現在我們引入用戶bean

public class Roles {
	private int id;
	private String roleName;
	//用戶
	private Users users;
	
	public Roles() {
	}
	public Roles(int id,String roleName,Users users) {
		this.id=id;
		this.roleName = roleName;
		this.users=users;
	}
	//重寫toString方法,方便測試
	@Override
	public String toString() {
		return "Roles [id=" + id + ", roleName=" + roleName + ", users="
				+ users + "]";
	}
}
用戶bean

public class Users {
	private int id;
	private String name;
	public Users(){
		
	}
	public Users(int id, String name) {
		this.id = id;
		this.name = name;
	}
	@Override
	public String toString() {
		return "Users [id=" + id + ", name=" + name + "]";
	}
}

spring配置

	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
		<constructor-arg value="1"/>
		<constructor-arg value="管理員"/>
		<constructor-arg ref="users"/>
	</bean>
	<bean id="users" class="cn.com.ztz.spring.model.Users">
		<constructor-arg value="2"/>
		<constructor-arg value="張三"/>
	</bean>

運行測試方法,得到結果:

Roles [id=1, roleName=管理員, users=Users [id=2, name=張三]]


下面這個在Roles裏面引入Users,在spring裏面就要用<constructor-arg ref="users"/>去關聯Users。

總結:構造器注入雖然很方便,但是在開發中有很多弊端,比如我不想注入某個字段,怎麼辦。所以,在用的時候看業務在去用具體方法。


博主表述不太好,見諒



發佈了54 篇原創文章 · 獲贊 47 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章