《Spring in Action》学习笔记:Bean装配与初始化细节

需积分: 9 2 下载量 7 浏览量 更新于2024-07-31 收藏 466KB PDF 举报
"《Spring in Action》学习笔记" 在深入探讨Spring框架的细节之前,我们先了解一下Spring的核心概念。Spring是一个轻量级的Java企业级应用框架,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理等。《Spring in Action》这本书是学习Spring的宝贵资料,书中详细介绍了Spring的各种特性。 首先,我们来看第二章关于装配Bean的部分: 1. `<ref>`标签用于引用其他Bean,`bean`属性是Bean的ID,`local`属性适用于同一作用域内的引用,而`parent`属性则用于表示当前Bean是另一个Bean的父Bean,继承其属性和配置。 2. `<list>`和`<set>`元素都可用于集合类型的属性注入,它们可以互换,但`<list>`通常保持顺序,而`<set>`不保证顺序。`<value>`标签则用于添加集合元素。 3. `<map>`标签用于创建Map对象,其key必须是字符串,虽然这在大多数情况下足够使用,但如果需要非字符串key,可能需要其他方法来实现。 4. 装配Map属性时,需要使用`<entry key="key1"><value>foo</value></entry>`结构,而`<props>`标签用于properties属性,如`<prop key="key1">foo</prop>`,因为properties的值总是字符串。 5. 设置属性为null时,可以使用`<property name="foo"><null/></property>`,注意这与字符串"null"不同。 6. 构造函数注入依赖时,如果构造函数有多个参数,可以通过`index`或`type`属性指定匹配的参数。`index`属性根据参数位置进行匹配,而`type`则基于参数类型。 7. Spring的自动装配有四种模式:byName、byType、constructor和autodetect。`default-autowire`属性可以在`<beans>`标签中设置全局默认值。尽管自动装配提供了便利,但过度依赖可能导致代码可读性和可控性下降,因此应谨慎使用。 8. `BeanPostProcessor`接口提供两种方法:`postProcessBeforeInitialization`和`postProcessAfterInitialization`,分别在bean初始化前和后执行。这些方法需要注册到`BeanFactory`,Spring容器会自动调用。`ApplicationContextAwareProcessor`是Spring内部的一个处理器,它注册在`AbstractApplicationContext`上下文中。 9. `BeanFactoryPostProcessor`接口则在Bean工厂加载所有Bean定义后,但在实例化Bean之前运行。这个接口常用于对Bean定义进行后期处理,例如修改属性值。 以上只是《Spring in Action》中部分学习笔记的概述,实际上,书中还涵盖了更多内容,如AOP的实现、Spring MVC、数据访问集成、测试策略等。通过深入学习这本书,开发者能够掌握Spring框架的核心知识,从而更有效地构建和管理Java应用程序。