学习日记-spring-day36-6.24

知识点:
 

1.通过指定构造器配置Bean

知识点

核心内容

重点

Spring IOC容器构造器配置

通过constructor-arg标签指定构造器参数,支持index、name、type三种匹配方式

无参构造器必须存在(默认调用),全参构造器需显式配置

参数匹配规则

index按参数位置(从0开始)、name按参数名、type按参数类型顺序匹配

相同类型顺序的构造器不可重复(Java语法限制)

构造器初始化验证

通过输出日志验证构造器调用,如"构造器被调用"

需注意参数赋值顺序与构造器声明一致

标签语法

混合使用index/name/type时需确保逻辑唯一性

异常处理

未指定构造器时默认调用无参构造器,若不存在则报错

全参构造器需完整赋值,否则报错

2.通过p名称空间配置Bean

知识点

核心内容

重点

p名称空间配置

通过p:前缀简化Spring Bean的XML属性配置(如p:monsterID="500")

需手动添加XML命名空间(光标放p处按Alt+Enter)

属性赋值案例

用p:name="红孩儿"和p:skill="吐火"配置Monster Bean

属性名需与类字段一致,未绑定命名空间会报错

IDEA操作技巧

多次尝试Alt+Enter添加命名空间(存在识别延迟)

需观察是否自动生成xmlns:p="..."

配置对比

p名称空间 vs 传统标签

简洁性:p名称空间更紧凑;可读性:传统方式更直观

3.通过ref来配置bean(1)

知识点

核心内容

重点

Spring IOC容器配置

通过ref属性实现Bean对象的相互引用(如Service引用DAO)

ref与直接属性赋值的区别; XML配置顺序是否影响依赖注入

依赖注入(DI)原理

容器自动扫描并建立Bean关联关系,无需严格按声明顺序配置

底层通过BeanDefinition映射管理依赖

XML配置实战

示例:MemberService通过注入MemberDao

ID唯一性验证; 属性名与ref的匹配逻辑

开发规范建议

虽无顺序要求,但推荐按业务逻辑顺序配置以提高可读性

配置错误检测机制(如IDE绿叶子标识)

面试考点

面试不考具体XML配置形式,但需理解依赖注入的应用场景

“知道到哪查找”比死记硬背更重要

4.通过ref来配置bean(2)

知识点

核心内容

重点

IOC容器引用关系验证

通过reference标签引用memberDao,并分析IOC容器结构验证对象引用关系

单例对象存储位置(BeanFactory的singletonObjects表)

单例对象标识

通过哈希值(如@2741)标识容器中的单例对象

对象引用一致性验证(memberService引用的memberDao哈希值需匹配)

调试技巧

通过断点调试观察IOC容器的对象存储和引用关系

容器结构导航(BeanFactory → singletonObjects → 目标对象)

引用关系逻辑

memberService中的memberDao属性实际指向容器初始化的同一对象

哈希值对比(@2741 vs @2761中的属性值)

5.通过内部Bean来配置属性

知识点

核心内容

重点

内部Bean配置

在Spring IOC容器中直接配置内部Bean对象而非引用外部Bean

属性配置时直接嵌套标签而非使用ref

属性注入方式

通过标签实现内部Bean的属性注入

与常规外部Bean引用的语法区别(嵌套 vs ref属性)

ID自动生成机制

重复类名时系统自动追加编号(如memberService2)

手动覆盖自动ID的优先级与命名规范

实战演示流程

1. 创建Service类;

2. 嵌套定义DAO Bean;

3. 测试内部Bean调用

配置文件的层级缩进规范与XML语法校验

验证方法

通过容器获取Bean实例并调用业务方法验证依赖注入

测试代码与配置文件的对应关系验证

6.对集合数组属性进行配置

知识点

核心内容

重点

Spring IOC容器集合属性配置

通过Master类演示集合/数组类型属性的赋值方法(List/Map/Set/数组/Properties)

集合类型注入语法差异(List vs. Set vs. Map)

List类型注入

使用标签嵌套元素配置monsterList属性

需注意泛型类型匹配

Map类型注入

通过标签定义masterMap,键值对需分别指定

Key必须为String,值可为对象引用

Set类型注入

使用标签配置monsterSet,元素需唯一性

与List注入的语法相似性易混淆

数组类型注入

通过或直接value属性为nameArr字符串数组赋值

基础类型数组需特殊处理

Properties类型注入

采用标签为pro属性配置键值对(强制String类型)

与Map的配置差异(无需显式键值标签)

对象关联设计

Master类通过集合属性管理Monster对象,体现1对多关系

实际开发中集合初始化的性能考量

7.对List属性进行配置

知识点

核心内容

重点

Spring IOC容器配置

通过引用方式和内部bean方式为集合属性赋值

引用方式 vs 内部bean方式的区别与应用场景

List集合配置

使用标签配置集合属性,包含引用外部bean和定义内部bean两种方式

内部bean无需分配ID,仅限当前属性使用

属性注入方式

演示name属性直接赋值和集合属性复杂配置

集合元素可以是值类型(value)或引用类型(ref)

配置灵活性

支持动态创建内部bean和引用现有bean混合使用

注意bean作用域和生命周期差异

测试验证方法

通过IoC容器获取bean并输出属性值验证配置效果

集合属性空值处理与默认初始化

命名规范

bean命名采用驼峰式(master)与显式ID配置

ID唯一性约束与引用关系维护

8.对Map属性进行配置

知识点

核心内容

重点

Map属性赋值

使用标签包裹多个元素,每个entry包含子元素

key的配置方式:必须通过嵌套结构指定

Entry结构

每个entry代表一个键值对,key通过value标签指定,value可通过引用或内部bean方式配置

value赋值方式:可引用外部bean(ref)或使用内部bean定义

引用外部bean

使用ref属性引用容器中已定义的bean作为map的value值

ID匹配验证:需确保引用的beanID与配置完全一致

Map配置验证

通过运行时输出验证map中key与value的对应关系

配置一致性检查:key命名与引用对象的逻辑关联性

配置灵活性

Spring容器支持多种属性注入方式,无需记忆所有语法但需理解实现原理

开发实践建议:掌握基础模式,具体语法可查阅文档

9.对Set属性进行配置

知识点

核心内容

重点

Set属性赋值

演示如何为Set属性赋值,支持引用外部Bean和定义内部Bean

Set与List的使用方式相似,但存储结构不同

外部Bean引用

通过标签的ref属性引用已定义的Bean(如monster5、monster6)

需确保引用的Bean已存在且ID匹配

内部Bean定义

直接在标签内嵌套定义Bean(如金角大王)

内部Bean无需ID,作用域限于当前属性

Set属性特点

存储无序唯一对象,演示案例包含白骨精(ID:300)、红孩儿(ID:500)和金角大王(ID:666)

易混淆点:Set与List的存储逻辑差异

运行验证

通过执行效果验证Set属性是否成功注入对象

需检查日志输出或程序反馈

10.对Array属性进行配置

知识点

核心内容

重点

数组属性赋值

演示如何给数组类型的属性赋值,直接使用value标签进行字符串数组赋值

区分value/reference的使用场景

数组类型定义

数组可包含多种数据类型(String/Set/Map/嵌套数组)

注意数组元素类型的多样性

XML配置实践

monster name数组配置示例:

小妖怪大妖怪老妖怪

标签嵌套层级关系

业务逻辑适配

标签选择原则:根据数组元素类型决定使用value/ref/array等标签

类型判断与实际业务需求的匹配

11.对Properties属性进行配置

知识点

核心内容

重点

Spring属性注入(property)

通过property标签以字符串形式配置键值对(KV),适用于简单属性注入

必须按字符串格式处理,不支持直接注入非字符串对象

Properties集合特性

作为HashMap子类,键值均为字符串,适用于配置参数(如用户名、密码、URL)

与普通Map的区别:强制字符串类型,不可存储其他对象

Spring依赖注入灵活性

支持多种集合类型注入(List/Map/Properties),覆盖大部分开发场景

重点掌握List、Map、Properties三种集合的配置方式

属性配置演示

示例代码:

需注意XML中属性值的引号使用和格式规范

你可能感兴趣的:(学习,spring,sql)