介紹
-
定義:創建對象時候,向類裏面屬性裏面設置值
-
三種屬性注入的方式:
- 有參構造
- set方法
-
在spring框架裏面,支持前兩種方式
(1)set方法注入(重點)
(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);
}
- 對象構造
- 屬性注入 : name=“” 類裏面方法的名稱,第二個參數是屬性的值
set屬性構造
- 原始方法:
- 在類裏面寫set方法
- main方法聲明對象
- 對象調用set方法
- spring實現:在xml文件中實現第2.3.步
- 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中 -
具體實現過程:
- 在service中把dao作爲類型屬性
- 生成dao類型的屬性的set方法
public class UserService {
//1 在類中設置Dao屬性
private UserDao userDao;
//2 設置userdao的set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
- 在配置文件中注入關係:!!
- 設置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>