概念

  • 依赖注入(Dependency Injection,DI)。
  • 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .
  • 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .

1.构造器注入

  1. <bean id="hello" name="hello2 h2,h3;h4" class="com.yuanzi.pojo.Hello">
  2. <property name="name" value="Spring"/>
  3. </bean>

2.Set方式注入

要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is

测试pojo类 :

package com.yuanzi.pojo;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

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;

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Student{" +
            "name='" + name + '\'' +
            ", address=" + address +
            ", books=" + Arrays.toString(books) +
            ", hobbys=" + hobbys +
            ", card=" + card +
            ", games=" + games +
            ", wife='" + wife + '\'' +
            ", info=" + info +
            '}';
    }

    public List<String> getHobbys() {
        return hobbys;
    }

    public Address getAddress() {
        return address;
    }

    public String[] getBooks() {
        return books;
    }

    public Map<String, String> getCard() {
        return card;
    }

    public String getWife() {
        return wife;
    }

    public Properties getInfo() {
        return info;
    }

    public void setName(String name) {
        this.name = name;
    }

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

    public void setBooks(String[] books) {
        this.books = books;
    }

    public void setCard(Map<String, String> card) {
        this.card = card;
    }

    public void setWife(String wife) {
        this.wife = wife;
    }

    public void setInfo(Properties info) {
        this.info = info;
    }

    public void setHobbys(List<String> hobbys) {
        this.hobbys = hobbys;
    }

    public Set<String> getGames() {
        return games;
    }

    public void setGames(Set<String> games) {
        this.games = games;
    }
}

常量注入

<!--普通值注入 value-->
<property name="name" value="原子"/>

**

Bean注入

<bean id="address" class="com.yuanzi.pojo.Address"/>        
<!--引用-->
<property name="address" ref="address"/>


数组注入

<!--数组-->
<property name="books">
  <array>
    <value>金瓶梅</value>
    <value>红楼梦</value>
    <value>西游记</value>
    <value>水浒传</value>
    <value>三国演义</value>
  </array>
</property>


List注入

<!--list-->
<property name="hobbys">
  <array>
    <value>听歌</value>
    <value>敲代码</value>
    <value>爬山</value>
  </array>
</property>

<!--注入list集合类型, 值是对象-->
<property name="coureseList">
  <array>
    <ref bean="course1"></ref>
    <ref bean="course2"></ref>
  </array>
</property>
<bean id="course1" class="com.yuanzi.collectiontype.Course">
      <property name="cname" value="Spring框架"></property>
</bean>
<bean id="course2" class="com.yuanzi.collectiontype.Course">
      <property name="cname" value="MyBatis框架"></property>
</bean>

Map注入

<!--map-->
<property name="card">
  <map>
    <entry key="身份证" value="1111111111"/>
    <entry key="银行卡" value="22222222"/>
  </map>
</property>

**

Set注入

<!--set-->
<property name="games">
  <set>
    <value>lol</value>
    <value>cs</value>
  </set>
</property>

**

Null注入

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

**

Properties注入

<!--properties-->
<property name="info">
  <props>
    <prop key="driver">20200910</prop>
    <prop key="url">男</prop>
    <prop key="username">root</prop>
    <prop key="password">123456</prop>
  </props>
</property>

image.png