看看今天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. 玩转Web之servlet(一)---怎样创建一个servlet

    Servlet概念:servlet就是用java编写的服务器端的小程序,用来完成下B/S架构(即浏览器和服务器架构)下客户端请求的响应处理. servlet通常在容器中运行Tomcat是常见的serv ...

  2. JAVA中的I/O流以及文件操作

    一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...

  3. 更改Calendar背景图(使用系统映像选择器)

    最近提出的申请,主接口是一个历,网上有很多第三方的日历控件,有使用ImageView实现,有使用GridView实现,它的优点是控制的灵活性. 而我选择使用本机CalendarView,关于这个控件, ...

  4. role &#39;PLUSTRACE&#39; does not exist

    I have created a new user named watson and granted the related priviledges as following: SQL> cre ...

  5. android visible invisible和gone差异

    android中UI应用的开发中常常会使用view.setVisibility()来设置控件的可见性.当中该函数有3个可选值.他们有着不同的含义: View.VISIBLE--->可见 View ...

  6. 微信oauth获取用户的信息页面授权

    參考链接(请在微信client中打开此链接体验) Scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid ...

  7. gradle中使用cobertura做代码覆盖(转)

    gradle很好用,但是默认是没有代码覆盖功能的,只好自己写.曾经在网上找到过别人的一段脚本,虽然也能用,但是有一些不爽的地方,一个原因是它不支持对层级工程中全部代码的覆盖,另一个原因是它用替换bui ...

  8. Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

    本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...

  9. 学习笔记 一步步了解webpack

    前言 demo 地址: https://github.com/yy8597/webpack-demos 之前学习了 broswerify,发现确实很好用.虽然没有 grunt 那样丰富的配置和插件,但 ...

  10. WPF六个控制概述

    在线演示:http://v.youku.com/v_show/id_XNzA0NjU1Mjk2.html 清晰版视频+代码下载:http://115.com/lb/5lbcftnrfo9s 一.简单介 ...