Spring的由来
Spring是一个轻量级Java开发框架,最早有RodJohnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EE full-stack(一站式)轻量级开元框架,为开发Java应用程序提供全面的基础架构支持。 --JavaEE框架整合开发入门到实践
主要特征
- 轻量:从大小与开销两方面而言spring都是轻量级
- 非侵入式:Spring应用的对象不依赖于特定的Spring类。
- 控制反转(IOC):将对象的使用权交由spring管理,容器负责对于对象的基本管理。达到松耦合的目的。
- 面向切面(AOP):Spring支持面向切面编程。
- 容器:包含并管理应用对象的配置和生命周期。
- 框架:可以将简单组件配置,组合成复杂的应用。
Spring的体系结构
核心容器
Spring核心容器是其他模块的建立基础,由Spring-core、Spring-beans、Spring-context、Spring-context-support和SpEL,Spring表达式语言,Spring Expression Language)等模块组成。
- Spring-core模块:提供了框架的基本组成部分,包括控制反转(Inversion of Control IOC)和依赖注入(Dependency Injection DI)功能。
- Spring-beans模块:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理的对象称为Bean。
- Spring-context模块:建立在Core和Beans模块的基础之上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。
- Spring-context-support模块:支持整合第三方库到Spring应用程序上下文,特别是用于告诉缓存(EhCache、JCache)和任务调度(CommonJ、Quartz)的支持。
- SpEL模块:在运行是提供了查询操作一个对象图的强大的表达语言。
数据的访问和集成
数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块。
- JDBC模块:提供了删除冗余的JDBC相关编码的JDBC抽象层。
- ORM模块:为流行的对象关系映射API,包括JPA、JDO、Hibernate。和iBatis,提供了集成层。
- OXM模块:提供了抽象层,它支持对JAXB、Castor、XMLBeans、JiBX和XStream的对象/XML映射的实现。
- Transactions模块:为实现特殊接口的类及所有的POJO支持编程式和声明式事务管理。
- JMS模块:Java消息服务,包含生产和消费者的信息的功能。
Web页面
Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成。
- Web模块:提供了基本的面向web的集成功能。例如多个文件上传的功能和使用servlet监听器和面向web应用程序的上下文来初始化IOC容器。
- Web-MVC模块:包含Spring的模型-视图-控制器(MVC),实现了web应用程序。
- WebSocket模块:为WebSocket-based提供了支持,而且在web应用程序中提供了客户端和服务端之间通信的两种方式。
- Portlet模块:提供了在portlet环境中实现MVC,并且反映了Web-Serclet模块的功能数据访问/集成。
其他模块
还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块。
- AOP模块:提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净的解耦,它实现了应用分离的功能。
- Aspects模块:提供了与AspectJ的集成,只是一个功能强大且成熟的面向切面编程(AOP)框架。
- Instrumentation模块:在一定的应用服务器中提供了类instrumentation的支持和类加载器的实现。
- Messaging模块:为STOMP提供了支持作为在应用程序中WebSocket子协议的使用。他也支持一个注解编程模式,它是为了选路和处理来自WebSocket客户端的STOMP信息。
- Test模块:支持对具有JUnit和TestNG框架和Spring组件的测试。
Spring家族