spring配置注入方式的两种实现(没有用注解)

本文介绍了Spring框架中不使用注解的配置注入方式,包括构造方法注入和set方法注入,以及如何配置复杂类型的注入,如List、Map、Properties。通过示例展示了bean.xml中的具体配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现service接口的业务类

构造方法注入

/**
 * @author DELL
 * 业务层实现类
 */
public class AccountServiceImpl implements IAccountService {

    /**
     * 经常变化的数据,并不适合构造方法注入
     */
    private String name;
    private Integer age;
    private Date bitthday;

    public AccountServiceImpl(String name, Integer age, Date bitthday) {
        this.name = name;
        this.age = age;
        this.bitthday = bitthday;
    }


    @Override
    public void saveAccount() {
         System.out.println("service中的saveAccount方法执行了...");
    }
}

bean.xml中的配置

 <!--  构造函数注入  -->
    <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
        <constructor-arg name="name" value="张三"></constructor-arg>
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="bitthday" ref="now"></constructor-arg>
    </bean>
    <bean id="accountDao" class="com.itheima.dao.impl.AccountDaoImpl"></bean>

    <!-- 配置一个日期对象   -->
    <bean id="now" class="java.util.Date"/>

set方法的注入

/**
 * @author DELL
 * 业务层实现类
 */
public class AccountServiceImpl2 implements IAccountService {

    /**
     * 经常变化的数据,并不适合构造方法注入
     */
    private String name;
    private Integer age;
    private Date bitthday;

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

    public void setAge(Integer age) { this.age = age; }

    public void setBitthday(Date bitthday) { this.bitthday = bitthday; }

    @Override
    public void saveAccount() {
         System.out.println("service中的saveAccount方法执行了...");
    }
}

bean.xml的配置

<!-- set方法注入
        涉及的标签 property
        出现的位置: bean标签的内部
     -->
    <bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2">
        <property name="name" value="张三"></property>
        <property name="age" value="18"></property>
        <property name="bitthday" ref="now"></property>
    </bean>

复杂类型的注入

  1. 只需要记住两种通用的
    List 和 Map
/**
 * @author DELL
 * 业务层实现类
 */
public class AccountServiceImpl3 implements IAccountService {

    private String[] myStrs;
    private List<String> myList;
    private Set<String> myset;
    private Map<String,String> myMap;
    private Properties myProps;


    public void setMyStrs(String[] myStrs) { this.myStrs = myStrs; }


    public void setMyList(List<String> myList) { this.myList = myList; }


    public void setMyset(Set<String> myset) { this.myset = myset; }


    public void setMyMap(Map<String, String> myMap) { this.myMap = myMap; }


    public void setMyProps(Properties myProps) { this.myProps = myProps; }

    @Override
    public void saveAccount() {
         System.out.println("service中的saveAccount方法执行了...");
         System.out.println(Arrays.toString(myStrs));
         System.out.println(myList);
         System.out.println(myset);
         System.out.println(myMap);
         System.out.println(myProps);
    }
}
<!-- 复杂类型的注入/集合类型的注入   -->
    <bean id="accountService3" class="com.itheima.service.impl.AccountServiceImpl3">
        <property name="myStrs">
            <array>
                <value>AA</value>
                <value>BB</value>
                <value>CC</value>
            </array>
        </property>

        <property name="myList">
            <list>
                <value>AA</value>
                <value>BB</value>
                <value>CC</value>
            </list>
        </property>

        <property name="myset">
            <set>
                <value>AA</value>
                <value>BB</value>
                <value>CC</value>
            </set>
        </property>

        <property name="myMap">
            <props>
                <prop key="testc">ccc</prop>
                <prop key="testd">ddd</prop>
            </props>
        </property>

        <property name="myProps">
            <map>
                <entry key="testA" value="aaa"></entry>
                <entry key="testB">
                    <value>bbb</value>
                </entry>
            </map>
        </property>

可以发现List与Set、String[]的配置一样但是Map和Properties配置可以互换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值