看看今天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. 每天进步一点点——Linux文件锁编程flock

    转载请注明出处:http://blog.csdn.net/cywosp/article/details/30083015 1. 场景概述     在多线程开发中.相互排斥锁能够用于对临界资源的保护,防 ...

  2. 【cocos2d-x】尝鲜 Cocos Code IDE(不断更新)

    Cocos Code IDE 是一个基于 Eclipse 的跨平台 IDE ,专门为 cocos2d lua & js 开发者准备,通过此工具.你能够方便的创建游戏project.编写而且调试 ...

  3. Android应用程序绑定服务(bindService)的过程源码分析

    Android应用程序组件Service与Activity一样,既能够在新的进程中启动,也能够在应用程序进程内部启动:前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部 ...

  4. JVM的参数详解(转)

    12年毕业到先在处理第一年外这几年纯属于打酱油,当初自学Java然后就出来找工作了,还有第一家面试就通过了挺幸运的 但之后的这段时间一直是处于吃老本的状态.最近心情真的很不好,各种黄老邪!一直处于堕落 ...

  5. HDU2149-Public Sale

    Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Android Property Animation 物业动画

    效果图:   Property Animation介绍: 出生在sdk3.0,是利用了View所拥有的属性,进行一系列的操作. 比方一个View有什么样的setAbc的属性,那么理论上就能够设置它. ...

  7. 2014.06.14 GlusterFS技术交流视频

    6月14线下GlusterFS视频交流.高清视频是非常好的,我初听言论方面,谈到迅速,似乎不是很清楚,讲座结束后速度需要改进.谢谢能力的天空AbleSky高大内设,谢谢学生参加. 在线公开课:http ...

  8. WPF学习(4)逻辑树和可视树

    前面几节说了一些WPF的基础,包括XAML和布局等.在接下来的几节,我们来说说WPF的核心概念,包括逻辑树和可视树.依赖对象和依赖属性.路由事件.命令这几个部分.本节介绍下逻辑树(Logical Tr ...

  9. 结构的具体说明sublime text 2/3的Golang开发环境

    1.下载并安装sublime text 2/3 官网下载:http://www.sublimetext.com/ 2.安装成功sublime text后.启动sublime text.选择菜单栏&qu ...

  10. 二十9天 月出冲击黑鸟 —Spring的AOP_AspectJ @annotation

    6月14日,阴转雨. "四面垂杨十里荷,向云何处最花多, 画楼南畔夕阳和.天气乍凉人寂寞, 光阴须得酒消磨,且来花里听笙歌." 面向切面的框架AspectJ邂逅Spring,不仅造 ...