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" />
相关推荐
fangjianj14 小时前
windows环境反弹shell
linux·windows·web安全
有味道的男人14 小时前
得物详情 API|支持实时价格、成色、鉴别服务数据
windows·python·api
老王的笔记v15 小时前
46期 Windows超级管理器 垃圾清理 预装卸载与系统优化工具箱
windows·系统架构
张人玉17 小时前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net
Mr-Apple19 小时前
系统找不到指定的文件-CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND
linux·windows·ubuntu·wsl
JSUITDLWXL19 小时前
jitsi-windows-local-translation
windows
点亮~黑夜1 天前
远程连接浏览无桌面服务器上的图片
windows·软件构建
Albart5751 天前
Docker Desktop 增量更新失败终极排查:Failed to apply delta update 反复回滚怎么办?
windows·docker·容器·docker部署大模型
Patrick在香港1 天前
Claude + Python 数据管道:一次字段改名,786 行历史数据被静默重写
开发语言·windows·python·claude·数据工程·数据校验·数据管道
Tiny2141 天前
解决VMware中win10虚拟机无法上网
网络·windows·vmware