1.Hello Spring
Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,主要是为了解决企业应用开发的复杂性而诞生的。它采用模块化分层设计,具有以下特点:
轻量低侵入式设计,代码污染极低;
控制反转和依赖注入实现了松散耦合;
切面编程降低业务耦合度,提高程序的可重用性及开发效率;
ORM和DAO简化了底层的数据库访问;
方便集成各种优秀框架等。
2.Spring组成
Spring 框架是一个分层架构,每个模块既可单独存在,又可与其他模块联合实现,其架构如下图所示:
核心容器:提供依赖注入和Bean管理功能,主要组件是BeanFactory,它使用控制反转模式将应用程序配置和依赖规范与实际的应用代码分开;
Context:扩展了BeanFactory的概念,增加了对国际化、事件传播,以及验证等的支持,此外还提供了许多企业服务及对模版框架集成的支持;
Web:建立于Context模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持,也提供了Spring和其它Web框架的集成;
MVC:是一个全功能的构建 Web 应用程序的 MVC 实现,容纳了大量视图技术,如 JSP、Velocity、POI等;
AOP:为Spring容器管理的对象提供了对面向切面编程的支持;
DAO:该层封装了对数据库的访问,并且处理了其抛出的错误消息,同时还基于AOP模块提供了事务管理;
ORM:Spring支持多种ORM框架,简化了数据库操作。
3.IOC理论推导
控制反转(IOC)是一种设计思想,即由传统的在Bean对象内部直接获取依赖对象改为由容器创建并在Bean需要时注入依赖对象。对于Spring框架来说,就是由Spring容器来负责实例化、配置以及装载Bean对象并控制其生命周期。这样,有利于设计出松散耦合、方便灵活、便于复用的程序。
为了实现控制反转,Spring容器需要通过依赖注入(Dependency Injection)维护Bean之间的依赖关系。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。