Spring框架
一、特点:
1、 轻量级:占用空间小,非侵入式设计……
2、 依赖注入(重点):低耦合,降低组件之间耦合性 提高程序灵活性和扩展性
3、 面向切面:spring将通用业务成为切面与核心业务抽离,使开发人员更专注于业务
4、 容器:spring负责管理所有的组件对象的创建和生命周期
5、 框架:spring提供大量基础功能,使开发人员快速开发
二、spring核心概念:依赖注入(Dependency Injection,DI)
三、spring4的组成?
核心容器
核心容器包含spring-core、spring-beans、spring-context、spring-context-support和spring-expression (Spring Expression Language,Spring表达式语音)这些模块。
spring-core和spring-beans构成了框架最基础的部分,包括控制反转和依赖注入功能。BeanFactory是工厂模式的一个很成熟的实现。
spring-context是基于spring-core和spring-beans构建的,它提供了一种以框架风格来访问对象的方式,类似于JNDI注册。ApplicationContext接口是spring-context的焦点。spring-context-support为集成第三方库(如定时器Quartz)提供支持。spring-expression提供了一种强大的表达式语言,可以在运行时查询和操作对象。
AOP和设备
spring-aop模块提供了一个AOP面向切面编程的实现。比如,允许开发者定义方法拦截器和切入点,以此来将业务逻辑和系统服务进行解耦。
spring-aspects模块提供与AspectJ的集成。
spring-instrument模块提供了在普通应用服务器中使用到的类设备支持和加载器实现。spring-instrument-tomcat模块包含了Spring的Tomcat设备代理。
消息发送
Spring 4包含了一个spring-messaging模块,它对Spring集成项目Message、MessageChannel和MessageHandler进行了重要的抽象,它是基于消息发送应用的基础。
数据访问/集成
数据访问/集成层包含JDBC(spring-jdbc)、ORM(spring-orm)、OXM(spring-oxm)、JMS(spring-jms)和事务(spring-tx)模块。
Web
Web层包含spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模块。其中,spring-web提供了面向Web集成的基本特性,比如文件上传功能。Spring-webmvc模块包含了Spring的MVC和REST Web Service实现。Spring-webmvc-portlet模块提供了在Portlet环境下的MVC实现。
测试
Spring-test模块支持Spring组建JUnit和TestNG的单元测试和集成测试。
spring容器的依赖注入(DI)和控制反转(IOC)
1、spring的DI和IOC是spring容器的核心功能之一,其作用为降低对象组件之间的耦合性,提高程序的灵活性和扩展性。
2、什么是DI?
由spring容器将具有依赖关系的组件对象进行组装,我们称之为依赖注入
3、什么是IOC?
是将程序中的所有组件对象的创建和管理从程序中(代码中)移出,交给容器进行创建和管理,我们称之为控制
4、实例:(……建筑工地 脚手架 建筑公司 房地产公司)
spring的AOP(面向切面)
1、 面向切面指将程序中的业务实现分为2大组成部分,一部分为整个业务最核心的代码实现,这个部分我们称为核心代码;另一部分是项目中大多数功能模块业务流程中都会出现的一些业务操作,我们成为交叉业务。
2、 我们将交叉业务从业务流程中分离出来,设置成切面,在原来的业务流程中,只保留核心业务实现
3、 通过spring框架在程序运行期间(执行核心业务的时候),框架将交叉业务代码织入到核心业务代码之上,从而补充完整整个业务流程
4、 使用这种方式,交叉业务都是可以选择的(需要就添加,不需要就拔除),这样我们可以在某一段代码上动态的增删一部分代码的实现,从而进一步加强程序的灵活性和扩展性