Spring该讲座
看看今天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该讲座的更多相关文章
- 2017技术核心——Spring
从毕业从事Java WEB开始到现在已差不多快5年时间了,一直使用的Spring相关的技术,其实最主要的是SpringMVC这一块.其实,一直停留在用的地步,并不知晓其原理,真正耐下心来去研究Spri ...
- idea的maven项目下spring与mybatis整合
两周前学习mybatis框架,参考了网上多位大神的博客,但因为各种原因(不解释)总是没法成功搭建环境并运行项目.周末花了点时间阅读了文档并整理之前琐碎的内容,解决掉之前遇到的问题.现将整合环境的关键步 ...
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
随机推荐
- Webx框架:Valve详细解释
Valve请求,用于控制过程的操作.它采用责任设计模式链(类别似至struts拦截器).valve阀装置,阀控制水流量(网络请求)趋势. 他们阀门定义. public class MyValve im ...
- 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim
报错原因: 使用UltraISO等软件刻录镜像时默认使用FAT32文件系统,该系统不支持大于4G的文件, 而Server 2012 R2的安装文件install.wim为5.12G,固安装失败. 解决 ...
- mysql出现Data truncated for column
1.首先叙述,描述你自己的问题. 假设你想把同意为空值的勾去掉.. .恰巧数据库中的数据 processed_f 为空没有值. . . .这时候你对数据表结构做更改的时候就会出现Data trunca ...
- HDU 3126 Nova [2009 Asia Wuhan Regional Contest Online]
标题效果 有着n巫妖.m精灵.k木.他们都有自己的位置坐标表示.冷却时间,树有覆盖范围. 假设某个巫妖攻击精灵的路线(他俩之间的连线)经过树的覆盖范围,表示精灵被树挡住巫妖攻击不到.求巫妖杀死所有精灵 ...
- OpenCV——Delaunay三角 [转载]
从这个博客转载 http://blog.csdn.net/raby_gyl/article/details/17409717 请其它同学转载时注明原始文章的出处! Delaunay三角剖分是1934年 ...
- mysql_install_db出错,Unable to lock /usr/local/mysql/var/ibdata1, error: 11
今天,在一台旧机器上编译一个新的Mysql,install时出了错: /usr/local/mysql_5615/scripts/mysql_install_db --user=mysql --bas ...
- 10624 - Super Number
题目链接 题意:给出n到m的范围,求出一个数在前i位数组成的数字能被i整除.假设存在输出这个数,假设不存在.输出-1. 思路:回溯,每次放第i位,然后推断是否符合题意.这题踩着时间过去的2.6s(看了 ...
- CloudFoundry.yml修订
--- name: CFRELEASE02 director_uuid: fdd46e30-f2c5-41dc-9662-0976fdac5716 releases: - name: cf versi ...
- MTK6572横屏的调试过程
电视剧集:系统MTK缺省的系统源代码,Phone模式.底部有三个虚拟按键.需求为,设置成默认横屏,设定一个合理的虚拟按键方案. ------------------------------------ ...
- Oracle按不同时间分组统计
Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- ...