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" />
相关推荐
qq_369224335 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波5 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse5 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子5 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt5 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal5 天前
Windows:flutter环境搭建
windows·flutter
未若君雅裁5 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang5 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农5 天前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design5 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis