多种方式实现依赖注入

什么是Spring的注入:

spring的注入是指在启动spring容器加载Bean配置的时候,完成对对变量的赋值行为。常见的spring注入的方式有两种,分别是设值注入和构造注入。

IOC在加载的时候会扫描XML文件里面的Bean的相关配置,然后为这些Bean进行实例化(创建Bean)。所谓注入就是在创建的过程中完成对成员变量的赋值

打个比方,假如在A类里面引入了一个B类声明了一个B类的变量b,注入就是在IOC容器初始化A的时候就把b的变量进行赋值。

 1,集合注入

public class MyCollection {
    private String[] array;
    private List<String> list;
    private Set<String> set;
    private Properties properties;
    private Map<String,String> map;

    @Override
    public String toString() {
        return "MyCollection{" +
                "array=" + Arrays.toString(array) +
                ", list=" + list +
                ", set=" + set +
                ", properties=" + properties +
                ", map=" + map +
                '}';
    }

    public String[] getArray() {
        return array;
    }

    public void setArray(String[] array) {
        this.array = array;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Set<String> getSet() {
        return set;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }
}

  配置文件内容

<bean id="collection" class="cn.demo.MyCollection">
        <property name="array">
            <array>
                <value>足球</value>
                <value>篮球</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>李小龙</value>
                <value>成龙</value>
            </list>
        </property>

        <property name="map">
            <map>
                <entry key="S1">
                    <value></value>
                </entry>
                <entry key="S2">
                    <value></value>
                </entry>
                <entry key="S3">
                    <value></value>
                </entry>
            </map>
        </property>

        <property name="set">
            <set>
            <value>C#</value>
            <value>Java</value>
            </set>
        </property>

        <property name="properties">
            <props>
                <prop key="1">s1</prop>
                <prop key="2">s2</prop>
                <prop key="3">s3</prop>
            </props>
        </property>
    </bean>

2,使用p命名空间注入

  这里不写类了,直接xml文件配置

 (注:需要引入p的依赖)

xmlns:p="http://www.springframework.org/schema/p"
 <bean id="car" class="cn.demo.Car">
        <property name="color" value="黄色"></property>
        <property name="type" value="OFO"></property>
    </bean>


    <bean id="stu" class="cn.demo.Stu" p:name="柴" p:age="21" p:car-ref="car"></bean>

   3,构造注入

<bean id="stu" class="cn.demo.Stu">
<constructor-arg index="0" value="柴光亚"></constructor-arg>
<constructor-arg index="1" value="21"></constructor-arg>
</bean>
原文地址:https://www.cnblogs.com/ztm1021810064/p/8526674.html