Spring框架学习日记——DAY02(依赖注入的方式)

今天主播对于Spring框架中的依赖注入的方式展开了学习:

1.set 注入(最常用、最简单)

1. 基本类型 & String

直接用value赋值

复制代码
<property name="name" value="李老师" />
<property name="age" value="30" />

2. 数组

复制代码
<property name="addrs">
    <list>
        <value>南京</value>
        <value>北京</value>
        <value>上海</value>
    </list>
</property>

3. Set 集合

xml

复制代码
<property name="set">
    <set>
        <value>AAA</value>
        <value>BBB</value>
    </set>
</property>

4. List 集合

复制代码
<property name="list">
    <list>
        <value>TTT</value>
        <value>VVV</value>
    </list>
</property>

5. Map 集合

复制代码
<property name="map">
    <map>
        <entry key="语文" value="80.5" />
        <entry key="数学" value="84.5" />
    </map>
</property>

6. Properties

复制代码
<property name="properties">
    <props>
        <prop key="aaa">yyyy</prop>
    </props>
</property>

7. 引用类型(ref)

复制代码
<property name="dao" ref="dao" />

<bean id="dao" class="com.xzit.injection.TeacherDaoImpl" />

8. 注入 null

复制代码
<property name="name">
    <null />
</property>

简化写法:p 命名空间,本质是调用set方法

直接写在 bean 标签里,不用写<property>

复制代码
xmlns:p="http://www.springframework.org/schema/p"

<bean id="girl" class="com.xzit.injection.Girl" 
      p:name="张三" p:height="170" />

<bean id="boy" class="com.xzit.injection.Boy" 
      p:name="李四" p:girl-ref="girl1" />

2 构造方法注入

适合必须有、不能为 null的依赖。

1. 普通写法

复制代码
<bean id="student" class="com.xzit.injection.Student">
    <constructor-arg name="name" value="张三" />
    <constructor-arg name="age" value="20" />
    <constructor-arg name="teacher" ref="a" />
</bean>

2. 简化写法:c 命名空间

复制代码
xmlns:c="http://www.springframework.org/schema/c"

<bean id="student" class="com.xzit.injection.Student"
      c:name="李四" c:age="22" c:teacher-ref="a" />

小技巧:4 种匹配方式

  • 参数顺序
  • 参数类型
  • 参数名字(最常用)
  • 索引 index

3 自动注入(偷懒神器)

只针对引用类型 ,不用写ref,Spring 自动找。

1. byName(按名字匹配)

类里的属性名 == bean 的 id

复制代码
<bean id="student" class="com.xzit.auto.Student" 
      autowire="byName" />

2. byType(按类型匹配)

容器里同类型只能有一个,多了报错

复制代码
<bean id="student" class="com.xzit.auto.Student" 
      autowire="byType" />
相关推荐
honder试试1 小时前
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
windows·elasticsearch·jenkins
IT里的交易员3 小时前
【系统】Windows 安装 uv
windows·uv
我不是立达刘宁宇4 小时前
windows密码操作
windows
Royzst4 小时前
一、集合概述(前置基础)
开发语言·windows·python
时光追逐者5 小时前
一款基于 C# 开发的 Windows 10/11 系统增强工具,精简、优化、定制一站完成!
开发语言·windows·c#·.net
liuhuizuikeai5 小时前
菜品抽奖活动MFC+服务端
c++·windows·mfc
Kiling_07045 小时前
Java集合进阶:Collection与List详解
java·windows·list
Byron Loong5 小时前
【逆向】PE 解析器 / 加壳器 + 加壳步骤 + 手动脱壳思路
windows
康小汪5 小时前
IntelliJ IDEA 安装教程(Windows 版)
java·windows·intellij-idea