---
# System prepended metadata

title: DI依賴注入環境-值注入
tags: [Spring-DI]

---

# DI依賴注入環境-值注入
###### tags: `Spring-DI`

## 構造器注入
![](https://i.imgur.com/sOyj5WI.png)
![](https://i.imgur.com/cbZWB0s.png)

## Set方式注入(重點)
### 依賴注入：Set注入！
#### 依賴：bean對象的創建依賴於容器
#### 注入：bean對象中的所有屬性，由容器來注入
********
### 環境搭建
#### 1.複雜類型
```java=
public class Address {
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

```
#### 2.真實測試對象
```java=
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbys;
    private Map<String ,String> card;
    private Set<String> games;
    private String wife;
    private Properties info;
}
```

#### 3.beans.xml
```xml=
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
   <bean id="student" class="com.kuang.pojo.Student">
        <!--第一種：普通值注入，value-->
          <property name="name" value="秦心"/>
   </bean>
</beans>

```
#### 4.測試類
```java=
public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student)context.getBean("student");
        System.out.println(student.getName());
    }
}

```

#### 5.完善注入信息
```xml=
<bean id="address" class="com.kuang.pojo.Address">
        <property name="address" value="西安"/>
    </bean>
   <bean id="student" class="com.kuang.pojo.Student">
        <!--第一種：普通值注入(基本數據類型、String)，value-->
          <property name="name" value="秦心"/>

        <!--第二種：bean注入，ref-->
          <property name="address" ref="address"/>

        <!--數組-->
           <property name="books">
           <array>
               <value>紅樓夢</value>
               <value>西遊記</value>
               <value>三國演義</value>
           </array>
       </property>

        <!--List-->
       <property name="hobbys">
               <list>
                   <value>聽歌</value>
                   <value>敲代碼</value>
                   <value>看電影</value>
               </list>
       </property>

        <!--Map-->
       <property name="card">
           <map>
               <entry key="身分證" value="123456"></entry>
               <entry key="銀行卡" value="841245"></entry>
           </map>
       </property>

        <!--Set -->
       <property name="games">
           <set>
               <value>LOL</value>
               <value>CSGO</value>
               <value>ALEX</value>
           </set>
       </property>

        <!--null-->
       <property name="wife">
           <null/>
       </property>

        <!--Properties-->
       <property name="info">
           <props>
               <prop key="學號">123</prop>
               <prop key="性別">男</prop>
               <prop key="姓名">靈夢</prop>
           </props>
       </property>
       </bean>
</beans>
```

```java=
public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student)context.getBean("student");
        System.out.println(student.toString());

//Student{
// name='秦心',
// address=Address{address='西安'},
// books=[紅樓夢, 西遊記, 三國演義],
// hobbys=[聽歌, 敲代碼, 看電影],
// card={身分證=123456, 銀行卡=841245},
// games=[LOL, CSGO, ALEX],
// wife='null',
// info={學號=123, 性別=男, 姓名=靈夢}}
    }
}
```

![](https://i.imgur.com/OHs40K4.png)
