目录
Spring基本介绍
Spring体系结构
Spring致力于Java EE应用的各种解决方案,而不是仅仅专注于某一层的方案。可以说Spirng是企业级应用开发的“一站式”选择,Spring贯穿表现层、业务层、持久层;以高度的开放性与已有的框架无缝整合。
Spring是模块化的,允许挑选和选择适用的模块,不必要把剩余部分也引入Spring框架提供约20个模块,可以根据应用程序的要求来使用。圈选的为重点。
Spring框架大约由20多个功能模块组成。这些模块被分为六个部分,分别是Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation及Test。
1.Core Container(核心容器)
Spring的核心容器是其他模块建立的基础,它主要由Beans模块、Core模块、Context模块、Context-support模块和SpEL(Spring Expression Language,Spring表达式语言)模块组成,具体介绍如下:
模块 | 描述 |
---|---|
Beans模块 | 提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean |
Core核心模块 | 提供了Spring框架的基本组成部分,包括IoC和DI功能 |
Context上下文模块 | 建立在Core和Beans模块的基础之上,访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文模块的焦点 |
Context-Support模块 | 提供了对第三方库嵌入 Spring 应用的集成支持,比如缓存(EhCache、Guava、JCache)、邮件服务(JavaMail)、任务调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、速率) |
SpEL模块 | Spring 3.0后新增的模块,提供了Spring Expression Language支持,是运行时查询和操作对象图的强大的表达式语言 |
核心容器由spring-core、spring-beans、spring-context、spring-context-support
spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成
(1)Spring-Core
提供了框架的基本组成部分,包括IoC、依赖注入功能
框架的最基础部分,提供了IOC特性
(2)Spring-Beans
提供BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦
(3)Spring-Context
建立在由core和 beans 模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能。Context模块也支持Java EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Context模块的焦点
为企业级开发提供了遍历和集成的工具
(4)Spring-Context-Support
提供了对第三方库集成到Spring上下文的支持,比如缓存(EhCache、Guava、JCache)、邮件(JavaMail)、调度(CommonJ、Quartz)、模板引擎(FreeMarker、JasperReports、Velocity)等
(5)Spring-Expression
提供了强大的表达式语言,用于在运行时查询和操作对象图。它是JSP 2.1规范中定义的统一表达式语言的扩展,支持set和get属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IoC容器检索对象,还支持列表的投影、选择以及聚合等
2.Data Access/Integration(数据访问/集成)
数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块。
模块 | 描述 |
---|---|
JDBC模块 | 提供了一个JDBC的抽象层,大幅度地减少了在开发过程中对数据库操作的编码 |
ORM模块 | 对流行的对象关系映射API,包括JPA、JDO和Hibernate提供了集成层支持 |
OXM模块 | 提供了一个支持对象/ XML映射的抽象层实现,如JAXB、Castor、XMLBeans、JiBX和XStream |
JMS模块 | 指Java消息传递服务,包含使用和产生信息的特性,自4.1版本后支持与Spring-message模块的集成 |
Transactions事务模块 | 支持对实现特殊接口以及所有POJO类的编程和声明式的事务管理 |
数据访问/集成层包括JDBC、ORM、OXM、JMS和事务处理模块
1.JDBC(Java Data Base Connectivity)
JDBC模块提供了JDBC抽象层,它消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析
2.ORM(Object Relational Mapping)
ORM模块提供了对流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等。通过此模块可以让这些ORM框架和spring的其它功能整合,比如前面提及的事务管理
3.OXM(Object XML Mapping)
OXM模块提供了对OXM实现的支持,比如JAXB、Castor、XML Beans、JiBX、XStream等
4.JMS(Java Message Service)
JMS模块包含生产(produce)和消费(consume)消息的功能。从Spring 4.1开始,集成了spring-messaging模块
5.事务模块
事务模块为实现特殊接口类及所有的POJO支持编程式和声明式事务管理。(注:编程式事务需要自己写beginTransaction()、commit()、rollback()等事务管理方法,声明式事务是通过注解或配置由spring自动处理,编程式事务粒度更细)
3.Web(web支持)
Spring的Web层包括WebSocket、Servlet、Web和Portlet模块
模块 | 描述 |
---|---|
WebSocket模块 | Spring 4.0以后新增的模块,它提供了WebSocket 和SockJS的实现,以及对STOMP的支持 |
Servlet模块 | 也称为Spring-webmvc模块,包含了Spring的模型—视图—控制器(MVC)和REST Web Services实现的Web应用程序 |
Web模块 | 提供了基本的Web开发集成特性,例如:多文件上传功能、使用Servlet监听器来初始化IoC容器以及Web应用上下文 |
Portlet模块 | 提供了在Portlet环境中使用MVC实现,类似Servlet模块的功能 |
Web层由Web、Web-MVC、Web-Socket、Web-Portlet组成
(1)Web模块
提供面向Web的基本功能和面向Web的应用上下文,比如多部件(multipart)文件上传功能、使用Servlet监听器初始化IoC容器等。它还包括HTTP客户端以及Spring远程调用中与Web相关的部分
(2)Web-MVC模块
为Web应用提供了模型视图控制(MVC)和REST Web服务的实现。Spring的MVC框架可以使领域模型代码和web表单完全地分离,且可以与Spring框架的其它所有功能进行集成
(3)Web-Socket模块
为WebSocket-based提供了支持,而且在Web应用程序中提供了客户端和服务器端之间通信的两种方式
(4)Web-Portlet模块
提供了用于Portlet环境的MVC实现,并反映了spring-webmvc模块的功能
4.其他模块
Spring的其他模块还有AOP、Aspects、Instrumentation以及Test模块
模块 | 描述 |
---|---|
AOP模块 | 提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性 |
Aspects模块 | 提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的面向切面编程(AOP)框架 |
Instrumentation模块 | 提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用 |
Messaging模块 | Spring 4.0以后新增的模块,它提供了对消息传递体系结构和协议的支持 |
还有其他一些重要的模块,像AOP、Aspects、Instrumentation、Web和测试模块
(1)AOP模块
提供了面向方面的编程实现,允许定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来,使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中
(2)Aspects模块
提供了与AspectJ的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架
(3)Instrumentation模块
在一定的应用服务器中提供了类instrumentation的支持和类加载器的实现
(4)Messaging模块
为STOMP提供了支持作为在应用程序中WebSocket子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自WebSocket客户端的STOMP信息
5.Test模块
提供了对单元测试和集成测试的支持
(1)测试模块
支持对具有JUnit或TestNG框架的Spring组件的测试
完整依赖关系
官方下载Spring
https://repo.spring.io/libs-release-local/org/springframework/spring/
1.浏览器地址栏输入https://spring.io/
2.进入Spring Framework
3.进入github找spring框架
spring相关的一些jar都放入到了github上,所以需要点击github这只猫,跳转到其他页面。
4.下划找到Access to Binaries(二进制文件)
5.点击 Spring Artifactory
6.从github的本地储存库找
7.找到需要的spring版本
Spring的Jar包、依赖说明
Spring—Jar包详解
Spring 包 | 描述 |
---|---|
org.springframework.aop | Spring的面向切面编程,提供AOP(面向切面编程)的实现 |
org.springframework.asm | spring 2.5.6的时候需要asm jar包,spring3.0开始提供它自己独立的asm jar包 |
org.springframework.aspects | Spring提供的对AspectJ框架的整合 |
org.springframework.beans | 所有应用都用到,包含访问配置文件,创建和管理bean等,是Spring IOC的基础实现。 |
org.springframework.context.support | Spring context的扩展支持,用于MVC方面 |
org.springframework.context | 提供在基础IOC功能上的扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。 |
org.springframework.core | Spring的核心工具包,其他包依赖此包 |
org.springframework.expression | Spring表达式语言 |
org.springframework.instrument.tomcat | Spring对tomcat连接池的集成 |
org.springframework.instrument | Spring对服务器的代理接口 |
org.springframework.jdbc | 对JDBC 的简单封装 |
org.springframework.jms | 为简化jms api的使用而做的简单封装 |
org.springframework.orm | 整合第三方的orm实现,如hibernate,ibatis,jdo以及spring 的jpa实现 |
org.springframework.oxm | Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换 |
org.springframework.test | 对JUNIT等测试框架的简单封装 |
org.springframework.transaction | 为JDBC,HIBERNATE,JDO和JPA提供的一致性的声明式和简单编程式事务管理 |
org.springframework.web.portlet | Spring MVC的增强 |
org.springframework.web.servlet | 对J2EE6.0 servlet3.0的支持 |
org.springframework.web.struts | 整合struts框架的支持,可以更方便更容易的集成Struts框架。 |
org.springframework.web | 包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入 |
WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类
Spring包依赖说明
spring-core.jar是所有包的基本,也就是所有的包都依赖spring-core.jar包
包 | 所依赖包 |
---|---|
spring-core.jar | spring-core.jar、commons-collections.jar |
spring-beans.jar | spring-core.jar、cglib-nodep-2.1_3.jar |
spring-aop.jar | spring-core.jar、spring-beans.jar、cglib-nodep-2.1.3.jar、aopalliance.jar |
spring-context.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、commons-collections.jar、aopalliance.jar |
spring-dao.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、spring-context.jar |
spring-jdbc.jar | spring-core.jar、spring-beans.jar、spring-dao.jar |
spring-web.jar | spring-core.jar、spring-beans.jar、spring-context.jar |
spring-webmvc.jar | spring-core.jar、spring-beans.jar、spring-context.jar、spring-web.jar |
spring -hibernate.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、spring- dao.jar、spring-jdbc.jar、spring-orm.jar、spring-web.jar、spring-webmvc.jar |
spring-orm.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、spring- dao.jar、spring-jdbc.jar、spring-web.jar、spring-webmvc.jar |
spring -remoting.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、spring- dao.jar、spring-context.jar、spring-web.jar、spring-webmvc.jar |
spring-support.jar | spring-core.jar、spring-beans.jar、spring-aop.jar、spring-dao.jar、spring-context.jar、spring-jdbc.jar |
spring-mock.jar | spring-core.jar、spring-beans.jar、spring-dao.jar、spring-context.jar、spring-jdbc.jar |
下载Spring Tools Suite插件
1.查看Eclipse版本
2.往下翻
3.下翻找到对应Eclipse版本的类型
Eclipse安装Spring插件
1.准备好和Eclipse版本相对应的Spring插件
2.打开Eclipse -> Help -> Install new software
点击Add --> 点击Archive --> 找到对应的插件位置,点击ok
一定要联网安装