Spring屬性注入

介紹

  • 定義:創建對象時候,向類裏面屬性裏面設置值

  • 三種屬性注入的方式:

    1. 有參構造
    2. set方法
  • 在spring框架裏面,支持前兩種方式
    (1)set方法注入(重點)
    (2)有參數構造注入

有參構造注入屬性

  • 原始方法:
    1. 在類裏面寫有參構造
    2. main方法聲明時加入構造參數
  • spring實現:在xml文件中實現第二步
    xml文件:
  <!-- 有參構造注入屬性 -->
   1.  <bean id="demo" class="cn.itclass.prosperiy.Test"> 
        <!-- 屬性注入 -->
        <constructor-arg name="name" value="張宇" >	</constructor-arg>
    </bean>

public class Test {
	private String name;
	
	//構造
	public Test(String name) {
		this.name=name;
	}
	
	public void show() {
		System.out.println("name=:::"+name);
	}
  1. 對象構造
  2. 屬性注入 : name=“” 類裏面方法的名稱,第二個參數是屬性的值

set屬性構造

  • 原始方法:
    1. 在類裏面寫set方法
    2. main方法聲明對象
    3. 對象調用set方法
  • spring實現:在xml文件中實現第2.3.步
    1. xml
   1. 類對象的聲明
             <bean id="Book" class="cn.itclass.prosperiy.Testset">
             2. 調用set方法設置屬性:注意name是屬性的名稱不是方法中形參的名稱
                     name=“”:類裏面屬性參數(private類型)的名稱
                     value=:參數的值
                 -->
                 <property name="bookName" value="平凡的世界"></property>
             </bean>
          
public class Testset {
 	private String bookName;
 	
 	public void setBookName(String book) {
 		this.bookName = book;
 	}

對象屬性注入:重點

  • 引入案例:
    有兩個類:service和dao,想要在service中調用到dao,必須在service中得到dao對象
    原始做法:在service中聲明dao對象,用對象再去調用dao的方法

  • 思想:
    在service中設置一個dao類型的屬性,在xml文件中吧dao作爲屬性注入到service中

  • 具體實現過程:

    1. 在service中把dao作爲類型屬性
    2. 生成dao類型的屬性的set方法
public class UserService {
     	//1 在類中設置Dao屬性
     	private UserDao userDao;
     	//2 設置userdao的set方法
     	public void setUserDao(UserDao userDao) {
     		this.userDao = userDao;
     	}
  1. 在配置文件中注入關係:!!
    • 設置dao類型【·作爲屬性的類】的對象
    • 設置service類型【接收屬性的類】對象
    • 屬性注入:ref引用dao類型–而不是value類型
   <!--對象注入  -->
               <!-- 首先創建userDao和userService的對象 -->
               <bean id="userDao" class="cn.itclass.prosperiy.UserDao"></bean>
               
               <bean id="userService" class="cn.itclass.prosperiy.UserService">
                   <!-- 對象參數設置 -->
                   <!-- ref引用對象userDao 值是上面UserDao對象的id -->
                   <property name="userDao" ref="userDao"></property>
               </bean>

P名稱空間注入

  • 與普通屬性注入類似,只是方法不同,以下只寫了xml文件內容

xml引入

xmlns:p="http://www.springframework.org/schema/p"



        <!-- P名稱空間注入 -->
        <bean id="userYear" class="cn.itclass.prosperiy.UserService" p:userYear="七年"></bean>

複雜類型注入

數組

list集合

map集合

properties類型
::以下是XML中的內容

- 這幾種類型作爲屬性
- xml中實現
        <!-- 複雜類型注入 -->
        <bean id="userServiceF" class="cn.itclass.prosperiy.UserService">
           <!-- 數組 -->
           <property name="arr">
                     <!-- value -->
                    <list>
                         <value></value>
                         <value>ai我家</value>
                    </list>
           </property>
           <!-- map -->
           <property name="map">
                   <map>
                     <entry key="張宇" value="寶"></entry>
                     <entry key="張宇" value="寶"></entry>
                   </map>
           </property>
           
           <!-- list -->
           <property name="list">
                   <list>
                    <value>橫刀奪愛</value>
                    <value>橫刀奪愛</value>
                    <value>橫刀奪愛</value>
                    <value>橫刀奪愛</value>
                   </list>
           </property>
           <!-- properties-->
           <property name="properties">
                    <props>
                        <prop key="張宇">你猜我</prop>
                        <prop key="額捶你">尅阿布</prop>
                    </props>
           </property>
        </bean>
發佈了15 篇原創文章 · 獲贊 7 · 訪問量 4171
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章