pro spring 中文版
### Pro Spring 中文版 #### 第4章 Spring基础:控制反转介绍 在深入探讨Spring框架之前,我们需要理解其核心概念之一——控制反转(Inversion of Control, IoC)。这一概念最初由Martin Fowler提出,并被赋予了一个更为贴切的名字——依赖注入(Dependency Injection, DI)。尽管这两个术语常常被交替使用,但它们之间存在细微差别。 #### 控制反转的概念 **控制反转(IoC)**是一种设计原则,用于降低软件组件之间的耦合度。它将组件之间的控制权反转,让外部实体负责组件的创建和管理。IoC可以分为两种主要形式: 1. **依赖注入(Dependency Injection, DI)** - DI是一种实现IoC的方式,通过将依赖项直接传递给组件来减少硬编码的依赖。这种方式提高了代码的可测试性和灵活性。 - **构造器注入**:依赖项通过组件的构造函数传递。 - **Setter注入**:依赖项通过setter方法传递。 - **字段注入**:直接将依赖项注入到组件的字段中。 2. **依赖查找(Dependency Lookup, DL)** - 在DL模式下,组件主动查找并获取所需的依赖项。 - **依赖托拽**:组件从注册表中按需获取依赖。 - **上下文配置依赖查找**:组件在上下文中查找依赖项。 #### Spring中的依赖注入 Spring框架广泛支持DI技术,通过其强大的容器管理和依赖注入能力简化了Java应用程序的开发。 1. **依赖注入与Spring的实现** - **BeanFactory接口**:这是Spring框架的核心接口,用于管理Bean的生命周期。 - **ApplicationContext接口**:扩展了BeanFactory,提供了更丰富的环境信息和事件处理机制。 2. **基于Setter和基于构造方法的依赖注入** - **构造器注入**:推荐的DI方式,因为可以通过构造函数确定依赖项,确保Bean在使用前已完成初始化。 - **Setter注入**:通过setter方法注入依赖,适用于后期更改依赖项的情况。 3. **BeanFactory与ApplicationContext的区别** - **BeanFactory**:基本功能,不提供额外的服务或特性。 - **ApplicationContext**:高级容器,提供了国际化支持、事件发布机制等功能。 #### Spring BeanFactories的XML配置 1. **XML配置文件** - Spring允许使用XML文件来定义Bean及其依赖关系。 - 可以使用`<bean>`元素来定义每个Bean,并指定其类名和其他属性。 2. **Bean继承** - 在XML配置中,可以定义一个Bean继承另一个Bean的属性,便于复用和维护代码。 3. **生命周期控制** - Spring提供了对Bean生命周期的精细控制,如初始化方法(init-method)和销毁方法(destroy-method)。 4. **自动装配(Autowiring)** - 自动装配是Spring框架的一个特性,允许容器自动将依赖项匹配到相应的Bean中,无需显式配置。 #### 示例代码解析 以下是一个使用Spring框架的简单示例,展示了依赖托拽的使用: ```java public static void main(String[] args) throws Exception { // 获取BeanFactory BeanFactory factory = getBeanFactory(); MessageRenderer mr = (MessageRenderer) factory.getBean("messageRenderer"); // 使用MessageRenderer执行业务逻辑 } ``` 在这个例子中,`getBeanFactory()`方法返回一个`BeanFactory`实例,然后通过`getBean()`方法获取名为`messageRenderer`的Bean。这是一种依赖托拽的实现方式,即主动从BeanFactory中获取依赖。 #### 总结 Spring框架通过其IoC容器实现了依赖注入,极大地简化了Java应用程序的开发过程。通过Spring,开发者可以更专注于业务逻辑的实现,而不用过多关注对象的创建和依赖管理。此外,Spring的XML配置支持使得配置Bean及其依赖变得直观和简洁。理解这些概念对于掌握Spring框架至关重要。
剩余33页未读,继续阅读
- 11001000110010112018-04-24这个只有一小部分,不是全部的,建议大家不用下载了!!感谢!
- tank21408962017-09-01只有第四章。。。。
- jlfsdtc2017-09-15只有第四章
- as0707072017-01-04很好的资 源,作为参考书保留下来。谢谢楼主
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【java毕业设计】电影售票系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】大学生综合素质评分平台源码(ssm+mysql+说明文档+LW).zip
- Java实现字符串的逆序StringReverse
- 【java毕业设计】宠物医院信息管理系统源码(ssm+mysql+说明文档+LW).zip
- Linux内核5.0基础架构解析: ARM64架构、内存管理及进程管理
- 【java毕业设计】员工在线知识培训考试平台源码(ssm+mysql+说明文档).zip
- 【java毕业设计】演出道具租赁管理系统源码(ssm+mysql+说明文档).zip
- ScanMaster RPP3 脉冲放大器手册
- 【java毕业设计】社区医院儿童预防接种管理系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】企业台账管理平台源码(ssm+mysql+说明文档+LW).zip