装配Spring Bean之xml装配

本文介绍了依赖注入的两种方式:构造器注入和setter注入,并通过示例代码详细展示了每种注入方式的应用。此外,还提供了使用Spring框架进行复杂类型XML装配的例子,包括List、Set、Map、Properties和数组的配置。

依赖注入

  • 构造器注入

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);
    }
复制代码

转载于:https://juejin.im/post/5b63042de51d45195a716b79

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值