Spring系列之(四)Spring的依赖注入

Spring的依赖注入

在当前类需要用到其他类的对象,其他类的对象也是由Spring创建并将引用传递给当前类的对象的,我们只需要在配置文件中说明,说白了就是为当前类填充(也叫注入)其他类的对象

1. 能够注入的数据

能够注入的数据是指支持注入的这部分数据是可以被Spring填充(注入)到当前类的对象里的
如果是经常变化的数据,就不适合进行注入

  1. 基本类型和String
  2. 其他Bean类型(在配置文件中配置过或注解配置过的Bean)
  3. 复杂类型:集合类型
    复杂类型分两种结构,List结构集合(数组、List、Set)和Map结构集合(Map、Properties),结构相同,注入方式相同

2. 注入的方式

注入的方式就是如何为当前类填充(注入)其他类对象的引用,或者是如何将其他类对象的引用赋值给当前类的成员变量

  1. 构造函数
    优势:在获取Bean对象时,注入数据是必须的操作,否则对象无法创建成功
    劣势:改变了Bean对象的实例化方式,是我们在创建对象时,如果用不到这些数据,也必须提供
  2. set方法
    构造函数的优势就是set方法的劣势,构造函数的劣势就是set方法的优势
  3. 注解

3. 关于依赖注入的整合实例

3.1 使用构造函数方式注入基本类型、String、其他Bean类型数据

待注入的类
在这里插入图片描述
在这里插入图片描述
测试结果
在这里插入图片描述

3.2 使用set方法方式注入基本类型、String、其他Bean类型数据

待注入的类
在这里插入图片描述
在这里插入图片描述
测试结果
在这里插入图片描述

3.3 使用set方法方式注入复杂类型数据

待注入的类
在这里插入图片描述
beans.xml

<bean id="userService" class="com.itheima.service.impl.IUserServiceImpl">
        <property name="strs">
            <array>
                <value>11</value>
                <value>22</value>
                <value>33</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>11</value>
                <value>22</value>
                <value>33</value>
            </list>
        </property>
        <property name="set">
            <set>
                <value>11</value>
                <value>22</value>
                <value>33</value>
            </set>
        </property>
        <property name="map">
            <map>
                <entry key="a" value="b"></entry>
                <entry key="c">
                    <value>d</value>
                </entry>
            </map>
        </property>
        <property name="prop">
            <props>
                <prop key="a">b</prop>
                <prop key="c">d</prop>
            </props>
        </property>
    </bean>

此时,结构相同的集合类型注入时的标签可以用同一套

<bean id="userService" class="com.itheima.service.impl.IUserServiceImpl">
    <property name="strs">
        <list>
            <value>11</value>
            <value>22</value>
            <value>33</value>
        </list>
    </property>
    <property name="list">
        <list>
            <value>11</value>
            <value>22</value>
            <value>33</value>
        </list>
    </property>
    <property name="set">
        <list>
            <value>11</value>
            <value>22</value>
            <value>33</value>
        </list>
    </property>
    <property name="map">
        <map>
            <entry key="a" value="b"></entry>
            <entry key="c">
                <value>d</value>
            </entry>
        </map>
    </property>
    <property name="prop">
        <map>
            <entry key="a" value="b"></entry>
            <entry key="c">
                <value>d</value>
            </entry>
        </map>
    </property>
</bean>

测试结果
在这里插入图片描述

posted @   刘二水  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示