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" />
相关推荐
Crazy learner10 小时前
Windows 微软商店更新失败(错误代码 0x80004002)完整解决指南(2026最新有效)
windows·microsoft
Arenaschi11 小时前
关于GPT的版特点
java·网络·人工智能·windows·python·gpt
阿昭L12 小时前
Windows认证和安全对象的基本概念
windows·安全
周山至水数翠峰12 小时前
Windows 事件与跨线程调用
windows
techdashen13 小时前
拆开任意 Electron 应用:从 Windows 安装包到 Discord 的私有更新协议
javascript·windows·electron
PascalMing14 小时前
从零实现一款 Windows 下的 SSH 批量运维工具:LinuxSshTools 技术详解
运维·windows·ssh
Cheng小攸14 小时前
CTF攻防综合实战(1)
windows
未力忘15 小时前
【无标题】
windows
大明者省15 小时前
在 Windows Server 2019 环境下配置 IIS 站点、本地端口服务、反向代理及内外网访问、多站点多服务部署
windows
您^_^15 小时前
ClaudeCode最近更新导致第三方模型Token消耗率暴涨,缓存命中也相当夸张!!
人工智能·windows·缓存·个人开发·claudecode·deepseek v4 pro