看看今天Spring。

国内搞Java开发的朋友们。对Spring一定不会陌生。

Spring的历史?

谈起Spring。就会想起Ejb2.0。虽然。现实中有非常多基于Ejb2.0的成功系统,可是Ejb2.0并没有实现它的最初设想:简化企业级应用开发。Ejb的声明式编程模式的确简化了非常多基础架构层面的开发,比方事务、安全等等,可是Ejb2.0的模板式编码让人感到异常复杂。

为了简化Ejb,Spring诞生了。

Spring以AOP和IOC为核心,为JavaBean提供了像Ejb一样强大的功能。这些技术为POJO提供了类似于Ejb的声明式编程模型,却没有引入不论什么Ejb的复杂性。

之后,Spring与Ejb相互学习,在Ejb3.0中。借鉴了Spring的轻量;而Spring借鉴了Ejb的分布式。无论Spring与Ejb是竞争还是合作吧。反正它们在简化我们的开发。

什么是Spring?

Spring是JavaEE开发中轻量级开源框架。以IOC(Inverse of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术。此外,Spring一个非常大的特点,它并不像Ejb那样单打独斗,Spring集成了大量的第三方类库。用于和其它框架进行集成。

真正实现面向接口编程。

为什么使用Spring?

Spring是一个开源项目,是一个中间件,更是一个框架。那我们为什么使用Spring呢?有人说:框架这样的东西,最開始接触Java的时候,做好不要使用。

还是要从Java基础的东西学起;有人说:Spring这个框架真是太棒了。它的IOC可以写出更加面向接口的程序;它的AOP是OOP的更好的一个补充。

对,这两种说法我都很允许。

为了更好的理解Spring。我们要掌握好Java的基础。而就工作编码而言,Spring确实是很好的工具。

所以。不同的阶段。不同的对待。

Spring的优势?

轻量——Spring是非侵入式的,也就是说,Spring应用中的对象不依赖Spring的接口或者抽象类。

IOC——提起IOC,我就会想起JNDI。JNDI是对象主动从容器中查找依赖;而IOC是指容器在对象初始化时不等对象请求就主动将依赖传递给它。

Spring通过应用上下文(ApplicationContext)装载Bean的定义并把他们组装起来。

ApplicationContext负责对象的创建和组装。然后主动注入给对象使用。

AOP——Spring提供了面向切面编程的支持,同意通过分离应用的业务逻辑与切入性服务(如事务管理、日志、权限)进行内聚行开发。

容器——Spring包括并管理应用对象的配置和生命周期。在这个意义上它是一个容器。

框架——Spring能够简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式的组合,典型是在一个XML里面。

SpringMVC——类似于Struts2的一个web框架。

Spring概览

IOC

spring 核心模块实现了 IOC 的功能,用配置文件或者注解的方式,描写叙述类之间的依赖关系,由IOC容器负责依赖类之间的创建、拼接、管理、获取等工作, BeanFactory 接口是Spring 框架的核心接口,它实现了容器很多核心的功能。

使用Spring,我们最主要使用的功能;Spring的其它功能。大多都是基于IOC的扩展。

Context 模块构建于核心模块之上。扩展了 BeanFactory 的功能,加入了UI支持、 Bean生命周期控制、框架事件体系、资源载入透明化等多项功能。此外,该模块还提供了很多企业级服务的支持,如邮件服务、任务调度、 JNDI 定位、 EJB 集成、远程訪门等。

    ApplicationContext是 Context 模块的核心接口。

Context是Spring做好的扩展,增强了Spring的功能。

数据訪问/集成

    数据訪问/集成层包含JDBC,ORM,OXM。JMS和事务处理模块,每个模板的功能例如以下

    JDBC模块提供了不再须要冗长的JDBC编码相关了JDBC的抽象层。

ORM模块提供的集成层。流行的对象关系映射API。包含JPA,JDO。Hibernate和iBatis。

    OXM模块提供了一个支持对象/ XML映射实现对JAXB。Castor,使用XMLBeans,JiBX和XStream 的抽象层。

Spring能够不用与Hibernate或者iBatis、myBatis集成。Spring内部集成了SpringJDBC模板,SpringJDBC也算是Spring旗下的一个非常好用的Orm子框架;

此外,Spring也常常会与Hibernate、iBatis、myBatis集成。

Java消息服务JMS模块包括的功能为生产和消费的信息。

这是Spring扩展的对JMS的支持。

事务模块支持编程和声明式事务管理实现特殊接口类。

不论什么应用程序。其核心的问题是对数据的訪问和操作。数据有非常多表现形式,如数据表、XML、消息等,而每种数据形式又拥有不同的数据訪问技术(如数据表的訪问既能够直接通过JDBC,也能够通过Hirnate或iBatis)。

    Spring站在DAO的抽象层面,建立了一套面向DAO层统一的异常体系,同一时候将各种訪问数据的检查型异常转换为非检查型异常。为整合各种持久层框架提供基础。其次。Spnng通过模板化技术对各种数据訪问技术进行了薄层的封装。将模式化的代码隐藏起来,使数据訪问的程序得到大幅简化·这样,Spring就建立起了和数据形式及訪问技术无关的统一的DAO层,借助AOP技术,Spring提供了声明式事务的功能。

SpringMVC

Spring的作用是整合,但不只限于整合,Spring框架能够被看做是一个企业解决方式级别的框架。client发送请求,由DispatcherServlet完毕请求的转发,控制器调用一个用于映射的类HandlerMapping。该类用于将请求映射到相应的处理器来处理请求。HandlerMapping将请求映射到相应的处理器Controller(相当于Action),在Spring其中假设写一些处理器组件,一般实现Controller接口。在Controller中就能够调用一些Service来进行数据操作,ModelAndView用于存放dao中的数据。还能够存放相应视图的数据。假设想将处理结果返回给用户,那么在Spring框架中还提供了一个视图组件ViewResolver,该组件依据Controller返回的标示,找到相应的视图,将相应Response返回给用户。

SpringMVC是Spring旗下的子项目。与Struts2功能相仿。可是内部实现却大不同样。在与Spring集成方面,SpringMVC有着先天的优势,另外。也没有出现像Struts2那么多安全漏洞。

如今越来越受到大家的青睐。

以上内容,多为參照网络上的资源:包含百度百科、开源中国、网友博客以及《Spring实战》等资料。

之前打算偷偷懒不写总结的。看看书、看看资料就过去。只是,勿以善小而不为,小而为之勿以恶。所以,他决定做这方面的知识汇总。

版权声明:本文博主原创文章,博客,未经同意不得转载。

Spring该讲座的更多相关文章

  1. 2017技术核心——Spring

    从毕业从事Java WEB开始到现在已差不多快5年时间了,一直使用的Spring相关的技术,其实最主要的是SpringMVC这一块.其实,一直停留在用的地步,并不知晓其原理,真正耐下心来去研究Spri ...

  2. idea的maven项目下spring与mybatis整合

    两周前学习mybatis框架,参考了网上多位大神的博客,但因为各种原因(不解释)总是没法成功搭建环境并运行项目.周末花了点时间阅读了文档并整理之前琐碎的内容,解决掉之前遇到的问题.现将整合环境的关键步 ...

  3. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  4. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  5. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  6. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  7. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  8. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  9. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

随机推荐

  1. cocos2dx3.1-lua移植android流程

    我很懒惰,写这篇博客只是为了能够转出后,当忘记查看,所以我写了下面非常简单的内容.假设完全没有经验的学生请找另一篇文章 一.环境配置(win7): 用户变量如下面: ANDROID_SDK_ROOT: ...

  2. axWindowsMediaPlayer1获取音频长度

    OpenFileDialog openFileDialog1 = new OpenFileDialog { InitialDirectory = "c:\\", Filter = ...

  3. 基于android 社会的app短信分享 发送回调事件的实现

    摘要 前一段时间.由于项目的需要,采用ShareSDK该共享功能.其中包含 短信股吧.和呼叫系统,以分享要与成功处理服务器交互的消息后,(我不在乎在这里,收到.仅仅关心发出去了).可是ShareSDk ...

  4. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...

  5. java逼出来的递归中间

    请珍惜劳动小编成果.这篇文章是原来小编,转载请注明出处. 有些时候我们须要在中途强制跳出递归.并且还是须要一步跳出,而不一层一层的跳出.这时,我们能够採用抛异常的方法来实现. class Test { ...

  6. [数字dp] hdu 3565 Bi-peak Number

    意甲冠军: 为了范围[X,Y],的最大位数的范围内的需求高峰和值多少. 双峰是为了满足一些规定数量 你可以切两 /\ /\ 形式. 思维: dp[site][cur][ok]  site地点  面的数 ...

  7. ASP.NET5 Beta8

    ASP.NET5 Beta8 ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现 ...

  8. Java达到MySQL数据库备份(两)

    博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这样的方法比較繁杂.以下介绍还有一种备份MySQL数据库的方法: import java.io ...

  9. 亚马逊记AWS(Amazon Web Services)自由EC2应用

    很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付passwor ...

  10. 新秀学习Hibernate——一个简单的例子

    一个.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了可以使用Hibernate高速上手,我们先解说一个简单的Hibernate应用实例hibernat ...