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" />
相关推荐
山河不见老12 小时前
【Cursor 、Qoder安装问题】Cursor 、Qoder安装卡在“正在准备安装”问题排查及解决
人工智能·windows·编辑器
love530love13 小时前
Windows 原生编译 SGLang(2/8):三铁证判定可行 + --no-deps 外科手术式安装
windows·sglang
love530love14 小时前
Windows 原生编译 SGLang(4/8):环境关——VS 版本、venv 顺序、CUDA 多版本、生成器缓存
windows·缓存·sglang
2601_9623649714 小时前
Windows Hello 密钥生命周期科普:注册、鉴权、重置加密逻辑
windows·电脑
脚踏实地皮皮晨14 小时前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
笨鸟先飞,勤能补拙1 天前
AI 赋能网络安全领域深度剖析
网络·人工智能·windows·安全·web安全·网络安全·github
我上去就是一套QWER然后等待复活1 天前
Windows 清理 CC Switch 并恢复官方 Codex CLI 登录流程(完整记录)
windows
吾儿良辰1 天前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
哎呦喂我去去去1 天前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
脚踏实地皮皮晨1 天前
002002002_DepandencyObject类2
开发语言·windows·算法·c#·visual studio