装配Spring Bean之xml装配

88 阅读2分钟

依赖注入

  • 构造器注入

class Role{
        属性
     public Role(String name,String sex){
        this.name =name;
        this.sex = sex;
    }
getter &&setter
}

 <bean id="role" class="Role">
            
            <constructor-arg index="0" value="名称"/>
            <constructor-arg index="1" value="性别"/>
        </bean>
  • setter注入

class Role{
    public String name;
    public String sex;
    getter &&setter
}
 <bean name="role" class="Role">
        <property name="name" value="名称"/>
        <property name="sex" value="男"/>
</bean>
  • 装配集合

package pojo;

import java.util.*;

/**
 * 复杂类型xml装配
 */
public class ComplexAssembly {
    private Long id;
    private List<String> list;
    private Set<String> set;
    private Map<String,String> map;
    private Properties properties;
    private String[] array;

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

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    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 Map<String, String> getMap() {
        return map;
    }

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

    public Properties getProperties() {
        return properties;
    }

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

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

    public void setArray(String[] array) {
        this.array = array;
    }
}
<?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 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <!-- User Bean -->
    <bean name="ComplexAssembly" class="pojo.ComplexAssembly">
        <property name="id" value="1"/>
        <property name="list">
            <list>
                <value>list1</value>
                <value>list2</value>
                <value>list3</value>
            </list>
        </property>
        <property name="set">
            <set>
                <value>set1</value>
                <value>set2</value>
                <value>set3</value>
            </set>
        </property>
        <property name="map">
            <map>
                <entry key="key1" value="vaule-key1"></entry>
            </map>
        </property>
        <property name="properties">
            <props>
                <prop key="prop1">value1-prop</prop>
                <prop key="prop1">value-prop</prop>
            </props>
        </property>
        <property name="array">
            <list>
                <value>str1</value>
                <value>str2</value>
            </list>
        </property>

    </bean>
</beans>
  • 读取


    @Test
    public void fun1(){
    //这是现在的方法
        Resource resource = new ClassPathResource("applicationContext.xml");
        BeanFactory beanFactory = new DefaultListableBeanFactory();
        BeanDefinitionReader bdr = new XmlBeanDefinitionReader((BeanDefinitionRegistry)beanFactory);
        bdr.loadBeanDefinitions(resource);

        ComplexAssembly complexAssembly = (ComplexAssembly) beanFactory.getBean("ComplexAssembly");
        System.out.println(complexAssembly.getArray().length);
    
    
    //这是原来的放法,XmlBeanFactory已经废弃
        Resource resource1 = new ClassPathResource("applicationContext.xml");
        BeanFactory beanFactory1 = new XmlBeanFactory(resource1);
        ComplexAssembly complexAssembly1 = (ComplexAssembly) beanFactory1.getBean("ComplexAssembly");
        System.out.println(complexAssembly1.getArray().length);
    }