【spring】屬性注入

      spring的屬性注入是bean管理中的一個非常重要的內容,它可以通過有參數的構造函數注入屬性,也可以通過set方法注入屬性。包括基本類型的屬性注入、對象類型的屬性注入和複雜類型的屬性注入。

一.基本類型

有參數構造

代碼實現:

public class User{

	private String username;

	public User(String username) {
		this.username = username;
	}

	public void test1(){
		System.out.println("User....."+username);
	}	
}

spring配置文件實現:

        <!-- 使用有參數的構造注入屬性 -->
        <bean id="user" class="cn.itcast.property.User">
        	<!-- 使用有參的構造注入 -->
        	<constructor-arg name="username" value="張三"></constructor-arg>
        </bean>

      有參數的構造函數注入屬性的時候用的是<constructor-arg/>標籤。

set方法設置

代碼實現:

public class Book {

	private String bookname;
	//set方法
	public void setBookname(String bookname) {
		this.bookname = bookname;
	}
	
	public void demobook(){
		System.out.println("book......."+bookname);
	}	
}

spring配置文件實現:

        <!-- 使用set方法注入屬性 -->
        <bean id="book" class="cn.itcast.property.Book">
        	<!-- 注入屬性值 
        		name屬性值:類裏面定義的屬性名稱
        		value屬性:設置具體的值 -->       	
        	<property name="bookname" value="Spring實戰"></property>
        </bean>

      使用set方法注入屬性時用的是<property/>標籤。

二.對象類型

      我們在項目實戰中,service一般都需要調用dao,這時候就需要把dao對象注入到service中。首先我們創建UserService和UserDao兩個類,並在UserService類中定義UserDao類型的屬性。

public class UserService {

	//1.定義dao類型屬性
	private UserDao userDao;
	//生成set方法
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void add(){
		System.out.println("service.........");
		//在service裏面得到dao類對象,才能調用dao裏面的方法
		userDao.add();
	}
}
public class UserDao {

	public void add(){
		System.out.println("dao.........");
	}
}

      在配置文件中創建userService和userDao對象,並將userDao注入到userService中。

        <!-- 注入對象類型屬性 -->
        <!-- 配置service和dao對象 -->
        <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
        <bean id="userService" class="cn.itcast.ioc.UserService">
        	<!-- 注入dao對象
        		name屬性值:service類裏面屬性名稱
        		          字符串用value,對象用ref
        		ref屬性:dao配置bean標籤中id值 -->        	
        	 <property name="userDao" ref="userDao"></property>
        </bean>

三.複雜類型

      除了上面兩種類型可以注入之外,還有複雜類型屬性的注入,比如數組、list、map、properties等。

public class Person {

	private String[] arrs;
	private List<String> list;
	private Map<String,String> map;
	private Properties properties;

	public void setArrs(String[] arrs) {
		this.arrs = arrs;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public void setProperties(Properties properties) {
		this.properties = properties;
	}
	
	public void test(){
		System.out.println("arrs:"+arrs);
		System.out.println("list:"+list);
		System.out.println("map:"+map);
		System.out.println("properties:"+properties);
	}
}
<!-- 注入複雜類型屬性值 -->
        <bean id="person" class="cn.itcast.ioc.Person">
        	<!-- 數組 -->
        	<property name="arrs">
        		<list>
        			<value>張三</value>
        			<value>李四</value>
        			<value>王五</value>
        		</list>
        	</property>
        	<!-- list -->
        	<property name="list">
        		<list>
        			<value>Tom</value>
        			<value>Bob</value>
        			<value>Mary</value>
        		</list>
        	</property>
        	<!-- map -->
        	<property name="map">
        		<map>
        			<entry key="aa" value="小明"></entry>
        			<entry key="bb" value="小紅"></entry>
        			<entry key="cc" value="小美"></entry>
        		</map>
        	</property>
        	<!-- properties -->
        	<property name="properties">
        		<props>
        			<prop key="driverclass">com.mysql.jdbc.Driver</prop>
        			<prop key="username">root</prop>
        		</props>
        	</property>
        </bean>
      今天介紹的都是通過配置文件來實現bean管理,而我們平時經常用的是通過註解來管理bean,所以接下來將爲大家介紹註解方式的bean管理。

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