Spring注入

本文详细介绍了在Spring框架中如何通过setter方法和构造器进行依赖注入,包括对引用类型、基本数据类型和String的处理。同时,文章还提到了依赖自动装配的几种方式,如按类型和按名称,以及集合注入的实现方法。

前言

向一个普通的类中注入数据有什么方法?

set方法

构造方法

依赖注入描述了在容器之间建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或者字符串呢?

引用类型

基本数据类型与String

依赖注入方式

setter注入

简单类型

引用类型

构造器注入

简单类型

引用类型

一、Setter注入

1、引用数据类型

在bean中定义引用数据类型并且提供可访问的set方法。

    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype">
        <property name="bookDao" ref="BookDao_test"/>
    </bean>

 配置文件中使用property标签ref属性注入引用类型对象。

(property对应的是bean中的引用数据类型变量,ref对应其他bean的id)

2、基本数据类型和String

在bean中定义基本数据类型并且提供set方法。

    private int connection;
    private String databases;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void setConnection(int connection) {
        this.connection = connection;
    }

在配置文件中使用property标签value属性进行注入简单数据类型 

 <bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy">
        <!--配置没有顺序一说-->
        <property name="connection" value="10"/>
        <property name="databases" value="mysql"/>
    </bean>

二、 构造器注入

引用数据类型

在bean中定义引用数据类型属性并且提供可访问的构造方法

    private BookDao bookDao;
    //这是一个构造方法
    public BookDaoImpl(BookDao bookDao) {
        this.bookDao = bookDao;
    } 

在配置文件中使用constructor-arg标签ref属性注入引用数据类型对象

<bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype">
        <constructor-arg name="bookDao" ref="BookDao_test"/>
</bean>
<bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl"/>

简单数据类型与String

在bean中定义引用数据类型并且提供可访问的set方法

    private int connection;
    private String databases;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void setConnection(int connection) {
        this.connection = connection;
    }

配置中使用constructor-arg标签value属性注入简单数据类型

<bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl">
    <constructor-arg name="connectionNumber" value=10>
</bean>

参数适配

为了解决配置文件和set方法中变量名相同耦合度较高的问题,有以下两种解决方法。

总结 

 依赖自动装配

Ioc容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称之为自动装配

自动装配方式

1、按类型(最常用)

<bean id="userdao" name="userDao_1" class="com.tsj.dao.impl.UserDaoImpl" />
<bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" autowire="byType"/>

(我们可以对比一下使用setter注入) 

    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype">
        <property name="bookDao" ref="BookDao_test"/>
    </bean>

2、按名称

3、按构造方法

4、不启用自动装配

集合注入

注意:如果是引用类型注入,添加<ref bean=""/>

    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype">
        <property name="bookDao" ref="BookDao_test"/>
        <property name="list">
            <list>
                <value>1010</value>
                <value>200</value>
                <value>300</value>
            </list>
        </property>
        <property name="arrar">
            <array>
                <value>dajiahao</value>
                <value>2buabeo</value>
                <value>fqf</value>
            </array>
        </property>
        <property name="map">
            <map>
                <entry key="country" value="tianjin"/>
                <entry key="country" value="tianjin"/>
                <entry key="country" value="tianjin"/>
                <entry key="country" value="tianjin"/>
            </map>
        </property>
    </bean>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值