Spring入门之二-------SpringIoC之实例化Bean以及注入Bean

一、实例化Bean

1. 通过默认构造方法实创建Bean

public class Bean1 {

    public Bean1() {
        System.out.println(this.getClass().getSimpleName() + " has been created");
    }
}
Bean1
<bean id="bean1" class="com.imooc.springClass2.inject.Bean1"/>

2. 通过静态工厂方法创建Bean

public class Bean1Factory {
    public static Bean1 createBean1() {
        return new Bean1();
    }
}
<bean id="bean1" class="com.imooc.springClass2.inject.Bean1Factory" factory-method="createBean1"/>

3. 通过工厂实例方法创建Bean

public class Bean2Factory {
    public Bean2 createBean2() {
        return new Bean2();
    }
}
<bean id="bean2Factory" class="com.imooc.springClass2.inject.Bean2Factory"/>
<bean id="bean2FromFactory" factory-bean="bean2Factory" factory-method="createBean2"/>

二、注入Bean

public class Bean3 {

    private final Bean1 bean1;
    private final String stringValue1;
    private final Integer integerValue1;
    private Bean2 bean2;
    private String stringValue2;
    private Integer integerValue2;
    private List<String> stringList;
    private List<Bean2> bean2List;
    private Map<String, Integer> simpleMap;
    private Map<Bean1, Bean2> ObjectMap;
    private Set<String> stringSet;
    private Set<Bean2> bean2Set;
    private Properties properties;
    private String stringValue3;

    public Bean3(Bean1 bean1, String stringValue1, Integer integerValue1) {     
    }

    public Bean3(Bean1 bean1, String stringValue1, Integer integerValue1) {
        this.bean1 = bean1;
        this.stringValue1 = stringValue1;
        this.integerValue1 = integerValue1;
        System.out.println(this.getClass().getSimpleName() + " has been created");
    }

    //get/set ......
}

1. 通过构造方法注入Bean

<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <constructor-arg index="0" name="bean1" type="com.imooc.springClass2.inject.Bean1" ref="bean1"/>
    <constructor-arg index="1" name="stringValue1" type="java.lang.String" value="aaaaa"/>
    <constructor-arg index="2" name="integerValue1" type="java.lang.Integer" value="11111"/>
</bean>

其中,index、name、type无需全部都有,可区分是哪个参数即可。

简化版

<bean id="bean3FromSimple" class="com.imooc.springClass2.inject.Bean3" c:bean1-ref="bean1" c:stringValue1="aaaaa" c:integerValue1="11111"/>

2. 通过set方法注入Bean

<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="bean2" ref="bean2"/>
    <property name="stringValue2" value="bbbbb"/>
    <property name="integerValue2" value="22222"/>
</bean>

简化版

<bean id="bean3FromSimple" class="com.imooc.springClass2.inject.Bean3" p:bean2-ref="bean2" p:stringValue2="bbbbb" p:integerValue2="22222"/>

3. 集合类型注入Bean

List

<bean id="bean2" class="com.imooc.springClass2.inject.Bean2"/>
<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="stringList">
        <list>
            <value>ccccc</value>
            <value>ddddd</value>
        </list>
    </property>
    <property name="bean2List">
        <list>
            <ref bean="bean2"/>
            <ref bean="bean2"/>
        </list>
    </property>
</bean>

Map

<bean id="bean1" class="com.imooc.springClass2.inject.Bean1"/>
<bean id="bean2" class="com.imooc.springClass2.inject.Bean2"/>
<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="simpleMap">
        <map>
            <entry key="eeeee" value="33333"/>
            <entry key="fffff" value="44444"/>
        </map>
    </property>
    <property name="objectMap">
        <map>
            <entry key-ref="bean1" value-ref="bean2"/>
        </map>
    </property>
</bean>

Set

<bean id="bean2" class="com.imooc.springClass2.inject.Bean2"/>
<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="stringSet">
        <set>
            <value>eeeee</value>
            <value>fffff</value>
        </set>
    </property>
    <property name="bean2Set">
        <set>
            <ref bean="bean2"/>
        </set>
    </property>
</bean>

Properties

<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="properties">
        <props>
            <prop key="key1">value1</prop>
            <prop key="key2">value2</prop>
        </props>
    </property>
</bean>

4. null值注入Bean

<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="stringValue3">
        <null/>
    </property>
</bean>

5. 注入内部bean

<bean id="bean3" class="com.imooc.springClass2.inject.Bean3">
    <property name="bean2">
        <bean class="com.imooc.springClass2.inject.Bean2"/>
    </property>
</bean>

 

posted @ 2018-11-30 16:55  柚子苹果果  阅读(434)  评论(0编辑  收藏  举报