Spring学习之==>入门知识
一、Spring是什么?
Spring 是一种轻量级的、非侵入式的 Java/JavaEE 应用框架。Spring 使用的是基本的 JavaBean 来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
Spring 的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的 JavaSE/EE full-stack(一站式) 轻量级开源框架。
二、Spring能干什么?
笼统的说,Spring 能作为一个超级的"粘合"平台,把很多的技术有效整合到一起 形成一个整体,以更好地解决问题,并使系统结构更优良、性能更出众。(体现体系结构设计的:组件式、装配式、插拔式、复用性、无侵入性等)。
Spring 能干的事情很多,具体点说,最基本的有以下几条:
- Ioc/DI
- AOP
- 对JDBC和ORM的支持
- 对事物的支持
- 各种技术的整合
- Web应用框架(Spring MVC)
三、Spring有什么?

从上图可以看出Spring总共包含了大约20个模块,这些模块又被组成成为: 核心容器模块、数据访问/集成部分、Web部分、AOP部分和测试支持 几个部分。
核心容器部分(Core Container)
- Core和Beans模块: 提供了Spring最基础的功能,提供IoC和依赖注入特性;
- Context模块: 基于Core和Beans来构建,它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。Context封装包继承了beans包的功能,还增加了国际化(I18N)、事件传播、资源装载、以及透明创建上下文;
- Expression Language: 表达式语言模块,提供了在运行期间查询和操作对象图的能力;
数据访问/集成部分(Data Access/Integration)
- JDBC模块: 提供对JDBC的抽象,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码;
- ORM模块: 提供了常用的"对象/关系" 映射APIs的集成层。其中包括:JAP、JDO、Hibernate、Ibatis;
- OXM模块: 提供一个支持Object和XML进行映射的抽象层,其中包括JAXB、Castor、XMLBeans、JiBX、XStream;
- JMS模块: 提供一套"消息生产者、消费者"模板用于更加简单的使用JMS;
- Transaction模块: 支持程序通过简单声明性事务管理,只要是Spring管理对象都能得到Spring事务管理的好处;
Web部分
- Web模块:提供了基础的Web功能;
- Web-Servlet模块:提供了Web应用的Model-View-Controller(MVC)实现;
- Web-Struts模块:提供了对Struts集成的支持;
- Web-Portlet模块:提供了在Portlet环境下的MVC实现;
AOP部分
- AOP模块: 提供了符合AOP联盟规范的面向方面的编程实现,可以定于如:方法拦截器和切入点;
- Aspects模块:提供了对AspectJ的集成;
- Instrumenttation模块:提供了一些类级的工具支持和ClassLoader级的实现;
Test部分
- Test模块: 提供对使用JUnit和TestNG来测试Spring组件的支持,它提供一致的ApplicationContexts并缓存这些上下文,它还能提供mock对象,使得你可以独立的测试代码;
四、Spring的优点
- 方便解耦,简化开发 (高内聚低耦合)
- Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理;
- spring工厂是用于生成bean
- AOP编程的支持
- Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能;
- 声明式事务的支持
- 只需要通过配置就可以完成对事务的管理,而无需手动编程;
- 方便程序的测试
- Spring对Junit4支持,可以通过注解方便的测试Spring程序;
- 方便集成各种优秀框架
- Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持;
- 降低JavaEE API的使用难度
- Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低;
- Java 源码是经典学习范例
- Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果;
Spring学习之==>入门知识的更多相关文章
- Spring学习——从入门到精通
本文章是博主原创,转载需注明出处. 第一篇先简单入个门--通过Spring创建对象 开发环境为Myeclipse2013,JDK版本为1.6,不要嫌它老,新知识都是在旧知识的基础上建立起来的,所谓基础 ...
- Spring学习笔记(入门)
1.基本看了一下,spring就是利用这个框架帮助我们实例化对象的工具.首先我们需要引入jar包,pom.xml如下: <project xmlns="http://maven.apa ...
- Spring学习10-SpringMVC入门
二.SpringMVC请求处理流程 其中Front controller :前端控制器 Controller:后端控制器 三.Spring核心组件及请求处理流程
- Spring学习-- AOP入门动态代理
AOP 的拦截功能是由 java 中的动态代理来实现的.说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常 ...
- R语言学习笔记 (入门知识)
R免费使用:统计工具:# 注释,行注释块注释:anything="这是注释的内容"常用R语言编辑器:Rsutdio,Tinn-R,Eclipse+StatET:中文会有乱码帮助:? ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构
VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...
- Solr学习笔记(5)—— Spring Data Solr入门
一.Spring Data Solr简介 前面已经介绍了通过solrJ来操作solr,那么我们如何将Solr的应用集成到Spring中?Spring Data Solr就是为了方便Solr的开发所研制 ...
- [Spring框架]Spring AOP基础入门总结一.
前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...
随机推荐
- 生产者消费者问题--lock
# 代码: public class App { public static void main(String[] args) { Depot depot = new Depot(100); Prod ...
- Tomcat与Jetty比较
Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器. 它有一个基本数据模型,这个数据模型就是 Handler(处理 ...
- centos6实现基于google authenticator 的ssh登录二次验证
1.手机安装google身份验证器,在浏览器搜索身份验证器安装即可. centos6安装所需要的软件--- google-authenticator 2.查看这个包生成的所有文件和命令 3.输入goo ...
- 题解 【POJ1014】 Dividing
题目意思 有六种不同的石子,权值为\(1\)~\(6\),给出六种石子的数量,求能否将石子分成权值相等的两份. 解析 这题可以直接用多重背包写, 因为仔细想想, 能够平均分成两份, 也就是能将一部分石 ...
- BZOJ 1441: Min exgcd
根据 $exgcd$ 的定理,这种方程的最小解就是 $gcd$. Code: #include <cstdio> #include <algorithm> using name ...
- cookbook 6.2 定义常量
任务: 需要定义一些模块级别的变量(比如命名的常量),而且客户代码无法将其重新绑定: 解决方案: #coding = utf-8 class _const(object): class ConstEr ...
- 一步一步理解线段树——转载自JustDoIT
一步一步理解线段树 目录 一.概述 二.从一个例子理解线段树 创建线段树 线段树区间查询 单节点更新 区间更新 三.线段树实战 -------------------------- 一 概述 线段 ...
- 2019牛客暑期多校训练营(第二场)J
题意 给一个长度为1e9的只包含1和-1的数列,1的个数不超过1e7,计算有多少对\((l,r)\)满足\(\sum_{i=l}^r a[i]>0\) 分析 dp求出每段连续的1最右端为右端点的 ...
- AcWing:109. 天才ACM(倍增 + 归并排序)
给定一个整数 MM,对于任意一个整数集合 SS,定义“校验值”如下: 从集合 SS 中取出 MM 对数(即 2∗M2∗M 个数,不能重复使用集合中的数,如果 SS 中的整数不够 MM 对,则取到不能取 ...
- HDU 5831 Rikka with Parenthesis II ——(括号匹配问题)
用一个temp变量,每次出现左括号,+1,右括号,-1:用ans来记录出现的最小的值,很显然最终temp不等于0或者ans比-2小都是不可以的.-2是可以的,因为:“))((”可以把最左边的和最右边的 ...