spring配置
作者简介:
Craig Walls是Texas-based公司的软件开发人员,有着超过13年的开发经验,涉及的领域有通信,金融,零售,教育以及软件业等。他是Spring Framework的狂热拥护者,频繁的在当地local user groups讨论组和相关会议上演讲Spring,并且他的Blog上也有很多关于Spring的内容。出版的著作有:
z Spring in Action, 2nd Edition, 2007
z XDoclet in Action, 2003
他的Blog是:
z https://www.360docs.net/doc/1617953207.html,
所参与的项目:
z Committer to XDoclet project;
z Originator of Portlet and Spring modules for XDoclet
本手册主要是将分布于文档中的那些零散的配置文件部分统一成一个比较系统的整体。结合Spring文档一起查阅也许能节省你一些时间。不过,并不推荐你全部掌握;很多陌生的元素或标签只应用于特定场合。本手册英文版本可以在:https://www.360docs.net/doc/1617953207.html,下载。
Spring配置全书
作者Craig Walls
译者superleo 关于Spring的配置
Spring Framework总是不断的改变着Java企业开发的方向,它用一种松耦合的方式来配置和组装应用程序对象和业务对象,比以往的Java企业开发来的更加简洁。一旦你开发了基于Spring 的应用程序,在Spring上下文配置的那些资源简直就是唾手可得。
依赖注入是Spring容器的核心
尽管Spring Framework可以做很多事,但依赖注入却是Spring容器提供的最基本的功能。
任何稍微复杂一点的应用程序都至少由两个或两个以上的对象协作在一起,共同完成一些业务逻辑。以往的Java企业开发,每个对象都要自己去主动获得他们所引用(或依赖)的对象,才可正常运作。这将导致代码之间的紧耦合,难以测试。
有了依赖注入后,对象所依赖的资源则可通过外部来获得。换句话说,对象所依赖的资源是按照它们的需要给注入进去的。对于基于Spring的应用程序来说,是Spring容器将这些对象所依赖的资源帮助实现注入依赖的。
用XML来配置Spring
到了Spring2.0,Spring鼓励你使用基于XML Scheme的配置方式来应用于你的系统,这比起过去基于DTD的方式要更加灵活。一个典型的Spring2.5配置文件至少拥有以下结构:
xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd>
在
的命名空间,稍后我将会在本手册中一一介绍。如果你想使用其它命名空间的话,你需要事先声明它们。比如说,如果你想使用“context”命名空间的话,你应该在XML声明如下:
xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:context=”https://www.360docs.net/doc/1617953207.html,/schema/context” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/context https://www.360docs.net/doc/1617953207.html,/schema/context/spring-context-2.5.xsd”>
Beans 命名空间简介
Schema URI
https://www.360docs.net/doc/1617953207.html,/schema/beans
Schema XSD
https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd
beans命名空间是Spring命名空间的核心,也是你配置Spring时使用最多的一个。根元素是
Spring XML 图表的一些约定
Spring XML图通常使用以下符号来表示哪些元素是必选的,可选的以及它们之间的包含关系。
Bean命名空间下的元素简介
元素 描述
器所忽略,但
Spring context文档。
而返回一个指定的bean。这就是我们常说的getter注入。
允许为你的bean进行meta配置。仅在一些特殊场合下有用。
注入。
虽然有很多XML元素可以用来配置Spring context,但也许你用的最多的可能还是
属性 描述
abstract 如果设置为true,那么Spring容器认定此bean为抽象的,并且不
会对它进行初始化。
autowire 如果该bean需要autowire的话,声明采用哪一种autowire。可选
的值有:byTye,byname,constractor,autodetect或no
autowire-candidate 如果设置为false,该bean不会被当作其它bean的autowire候选
对象。(也许就是说就算别的bean设置了autowire,仍然会忽略掉
该bean)
class 用来指定bean的全限定名
dependency-check 要求Spring采用何种方式来检查bean的setting属性设置情况。
可用值如下:
simple:检查所有的原始类型属性注入情况
objects:检查所有复杂类型属性注入的情况
其它可选的值还有 default, none 或 all.
depends-on 该bean初始化之前,要求Spring容器事先将所依赖的bean也实例
化。
destroy-method 该bean从Spring容器卸载时,指定一个方法供Spring容器回调 factory-bean 指定一个工厂方法来创建此bean。
id 该bean在Spring容器中的唯一标识。
init-method 该bean被初始化或被注入到别的bean中时,Spring容器回调应该
方法。
lazy-init 如果为true那么bean将延迟加载。
name bean在spring容器中定义的名称。它是除使用id外的另一个选择。parent 指定bean在配置文件中的父类。
Scope 设置该bean的作用域。默认情况下,所有的beans都是singleton。
其它可选的包括:prototype, request和session.
Bean命名空间实例
下面的Spring XML配置文件配置了两个beans,其中一个注入到另一个中去:
xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd”>
第一个bean的ID为“pirate”,类型为“Pirate”。它使用了构造函数注入,该构造函数带有一个String参数,在这个例子中参数的值为“Long John Silver”。另外,它的“map”属性引用了另一个叫“treasureMap”的bean,该bean是TreasureMap的一个实例。
温馨提示:
不要把你所有的beans都定义在一个XML文件中。一旦你的应用程序变得越来越复杂,在Spring 的XML配置文件中定义的beans的数量一定让你印象深刻。也没有什么理由要把所有的beans 都定义在一个XML配置文件中去。通过将所有的beans分别放在多个XML文件中,有助于你的Spring配置文件更易于管理。当应用程序上下文(application context)建立的时候,可以使用
Context 命名空间简介
Schema URI
https://www.360docs.net/doc/1617953207.html,/schema/context
Schema XSD
https://www.360docs.net/doc/1617953207.html,/schema/context/spring-context-2.5.xsd
在Spring2.5中,context命名空间主要用来提供多种application context特定的配置。它包括:支持基于annotation的配置方式,JMX以及领域对象(domain object)的注入。
Context命名空间元素简介
属性 描述
果使用了
要使用此元素了。
Spring容器中去。使用此元素与
的类。
Bean命名空间实例
下面的Spring配置文件使用了
xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:context=”https://www.360docs.net/doc/1617953207.html,/schema/context” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/context https://www.360docs.net/doc/1617953207.html,/schema/context/spring-context-2.5.xsd”>
在上面的配置文件中,
温馨提示:
尽量为你的最终用户提供外部配置文件。
将所有的配置都定义在Spring配置文件中并不推荐。你根本别指望应用程序的管理员或最终用户会去研究Spring XML然后搞懂数据库的配置和其它特定布署细节,你不会真打算靠他们吧?相反,使用外部配置文件,我们可以使用
定义在/etc/pirate.properties属性文件中的那些键值对现在可以在Spring配置文件中大显身手啦: AOP 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/aop Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/aop/spring-context-2.5.xsd aop命名空间是用来在Spring context中声明aspects, pointcuts和advice 的。同样,使用@Aspectj annotation的话,也可以基于annotation方式来配置你的aop。使用aspects的话,可以定义被你多个程序切点使用(或织入)的功能。 AOP命名空间元素简介 元素 描述 调用某个方法。) 方法正确执行后,调用某个方法) 法抛出了异常,那么被该annoation标记的方法将被调用)。 后,都会调用某个方法) 行某个方法) 建立proxy. 如说“request”和“session”。 AOP命名空间实例 下面的Spring配置文件使用了aop命名空间来建一个aspect。 xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:aop=”https://www.360docs.net/doc/1617953207.html,/schema/aop” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/aop https://www.360docs.net/doc/1617953207.html,/schema/aop/spring-aop-2.5.xsd”> ref=”pirateTalker”> 该aspect由一个pointcut和两个advice组成。该pointcut用来定义所有对象plunder()方法的执行。标有 温馨提示: 使用@AspectJ annotation来减少AOP相关的配置文件数量。 “aop”命名空间下的元素可以非常轻松的将POJO变成aspects。而 JEE 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/jee Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/jee/spring-context-2.5.xsd JEE命名空间为从JNDI look up对象提供可使用的配置元素,当然还包括将EJB的引用也配置 在Spring context中去。 JEE命名空间元素简介 元素 描述 JEE命名空间实例 下面的Spring配置文件使用了部分jee命名空间元素,用来获取Spring容器外的对象,并且将 这些对象作为Spring的beans。 xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:jee=”https://www.360docs.net/doc/1617953207.html,/schema/jee” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/jee https://www.360docs.net/doc/1617953207.html,/schema/jee/spring-jee-2.5.xsd”> 第一个元素 另一个元素 JMS 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/jms Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/jee/spring-jms-2.5.xsd JMS命名空间提供的元素可用来配置message-driven POJO(消息驱动POJO),beans用来响应JMS destination (比如说一个topic或queue)。 JMS命名空间元素简介 元素 描述 message-driven POJOs. JMS命名空间实例 在下面的Spring配置文件中,我们建了一个message-driven POJO,用来响应JMS上的消息队 列。 xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:jms=”https://www.360docs.net/doc/1617953207.html,/schema/jms” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/jms https://www.360docs.net/doc/1617953207.html,/schema/jms/spring-jms-2.5.xsd”> 或queues的消息。在这个元素里,你可以声明一个或多个 topics。在这个例子中,单独的 LANG 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/lang Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/lang/spring-jms-2.5.xsd “LANG”命名空间允许你在Spring context中配置scripted objects(脚本对象)。这些对象可以是Groovy,JRuby或者BeanShell。 LANG命名空间元素简介 元素 描述 去。 LANG命名空间实例 在下面的Spring context中,Pirate beans的属性分别被定义为 个scripted beans注入: xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:lang=”https://www.360docs.net/doc/1617953207.html,/schema/lang” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/lang https://www.360docs.net/doc/1617953207.html,/schema/lang/spring-lang-2.5.xsd”> name=”hat” ref=”hat” /> TX 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/tx Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/tx/spring-jms-2.5.xsd “TX”命名空间为声明在Spring context中的那些Beans提供声明式事务处理的支持。 TX命名空间元素简介 元素 描述 或OC4J等应用程序器。 在下面的Spring context中,使用了tx命名空间下的元素,用来配置事务规则和界限: xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:tx=”https://www.360docs.net/doc/1617953207.html,/schema/tx” xmlns:aop=”https://www.360docs.net/doc/1617953207.html,/schema/aop” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/aop https://www.360docs.net/doc/1617953207.html,/schema/aop/spring-aop-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/tx https://www.360docs.net/doc/1617953207.html,/schema/tx/spring-tx-2.5.xsd”> propagation=”REQUIRED” /> name=”plunder*” 接下来, 温馨提示: Java事务配置规则 如果你正在考虑压缩Spring配置的XML数据的话,考虑用 UTIL 命名空间简介 Schema URI https://www.360docs.net/doc/1617953207.html,/schema/util Schema XSD https://www.360docs.net/doc/1617953207.html,/schema/util/spring-jms-2.5.xsd util命名空间可以将collections和其它non-bean对象封装在Spring配置文件中,让你感觉它们同其它bean没有什么区别。 UTIL命名空间元素简介 元素 描述 bean。 并将其暴露成一个Spring bean。 露成一个Spring bean。 UTIL命名空间实例 在下面的Spring context配置文件中,使用了util命名空间下的元素: xmlns:xsi=”https://www.360docs.net/doc/1617953207.html,/2001/XMLSchema-instance” xmlns:util=”https://www.360docs.net/doc/1617953207.html,/schema/util” xsi:schemaLocation=”https://www.360docs.net/doc/1617953207.html,/schema/beans https://www.360docs.net/doc/1617953207.html,/schema/beans/spring-beans-2.5.xsd https://www.360docs.net/doc/1617953207.html,/schema/util https://www.360docs.net/doc/1617953207.html,/schema/util/spring-util-2.5.xsd”> hearties! me down me Spring Annotation简介 历史上,Spring的配置最初只涵盖XML方式。但是Spring渐渐也与基于annotation的配置方式打成一片。到了Spring2.5,已经提供超过36个annotation的支持了,这还不包括第三方类库和Spring add-ons。 Context Configuration Annoations 这一组annotations主要是让Spring来创建和注入bean对象的。 Annotation 应用范围 描述 @Autowired 构造函数,字段,方法 声明一个构造函数,字段setter方法或其它 配置方法按照(bean)类型进行autowired。 标注为@Autowired的项并不要求一定是 public标识符。 @Configurable 类型 协同 明哪些类型的属性需要进行注入,甚至它们 还可以不由Spring容器来实例化。常常为领 域对象的属性配置此注入方式。 @Order 类型,方法,字段 当定义在不同的切面里的两个通知都需要在 一个相同的连接点中运行,那么除非你指 定,否则执行的顺序是未知的。这个时候就 可以使用@Order了,或者你也可以实现 org.springframework.core.Ordered接口。 @Qualifier 字段,参数,类型, Annotation类型 引导autowiring装配时,采用的是自定义的自动连接指定,而不是单纯的按类型匹配。(一个接口,多个实现类的选择时,非常有用。) @Required setters方法 指定一个属性必须被注入,否则认为该配置 操作失败。 @Scope 类型 指定一个bean的作用域,可选的值包括: singleton,prototype,request,session 或自定义的scope。 Transaction Annoations @Transactional annotation协同 spring配置文件各个属性详解 分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere 目录(?)[+]一、引用外部属性文件 Springmvc框架配置步骤 小弟是个新手,有不对的地方请tell me,一起研究探讨。谢谢。 1062140832@https://www.360docs.net/doc/1617953207.html, 配置springmvc框架其实不是很难,要现有一个总体的认识,确定要分几步,每一步主要是干什么,不要太盲目。 以为web.xml是项目的入口,所以所有的配置文件,都必须引入到wem.xml中,不然,配置了等于没用。所以,要先从入口入手。 配置web.xml 1、首先引入springmvc-servlet.xml文件 给你详细讲一下SSH框架的事物管理,希望对你有帮助。 Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单的配置就能轻松的对数据库进行crud操作,下面就hibernate+spring 的配置做一下剖析,一边与大家一起分享经验: 1、准备工作: 可以利用hibernate tools生成相关映射文件已经po对象、dao对象,dao 也可以自己手动编写,无非就是实现crud,如果通过继承hibernate提供的HibernateDaoSupport,则可以更轻松的实现 关键就在于配置文件,下面看一个样例: springMVC详解以及注解说明 基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置Bean、装配Bean 的功能,您可以使用基于注释的Spring IoC 替换原来基于XML 的配置。本文通过实例详细讲述了Spring 2.5 基于注释IoC 功能的使用。 概述 注释配置相对于XML 配置具有很多的优势: ? 它可以充分利用Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA 注释配置ORM 映射时,我们就不需要指定PO 的属性名、类型等信息,如果关系表字段和PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过Java 反射机制获取。 ? 注释和Java 代码位于一个文件中,而XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起,有助于增强程序的内聚性。而采用独立的XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注释配置比XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分XML 配置的功能。在这篇文章里,我们将向您讲述使用注释进行Bean 定义和依赖注入的内容。 Spring2.5的注释 Spring 2.5 提供了AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 和RequiredAnnotationBeanPostProcessor这四个主要的关于Annotation 的BeanPostProcessor。 我们可以使用 spring 年编著的《Expert one to one J2EE design and development Spring Logo 书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。 编辑本段简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB 多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC 与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 开始之前 关于本教程 本教程将深入讲解Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解Spring 事务管理的本质,并灵活运用之。 先决条件 本教程假定您已经掌握了Java 基础知识,并对Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。 本文将直接使用这些概念而不做详细解释。另外,您最好掌握数据库的基础知识,虽然这不是必须。 系统需求 要试验这份教程中的工具和示例,硬件配置需求为:至少带有512MB 内存(推荐1GB)的系统。需要安装以下软件: ?Sun JDK 或更新版本或IBM Developer Kit for the Java 5 platform 版本。?Spring framework 。本教程附带的示例代码已经在Spring 上测试过。?MySQL 或更新版本。 ? Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失。 在Spring 中,事务是通过TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法。具体如清单1所示: 清单1. TransactionDefinition 接口中定义的主要方法 public interface TransactionDefinition{ int getIsolationLevel(); int getPropagationBehavior(); int getTimeout(); boolean isReadOnly(); Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念。 Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB 的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson 成为一个改变Java世界的大师级人物。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。 Spring简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且 Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 ◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将 1. (单选题)下列关于Spring配置文件的说法不正确的是 o A. Spring默认是读取/WEB-INF/配置文件 o B. Spring的配置文件可以配置在类路径下,并可以重命名,但是需要在文件中指定 o C. 把文件放到src目录下,Spring也可以读到 o D. 可以通过在中的 正确答案:A IOC是来完成相互依赖的对象的创建、协调工作。 3. (单选题)下列关于Spring的装配模式(default-autowire)描述不正确的是 o A. Spring中,至少有两种装配模式,按“类型”和“名字” o B. Spring中默认是按名字进行装配的 o C. 可以用default-autowire=”byType”配置按类型装配 o D. 一旦在一个Spring配置文件中配置了default-autowire=”byType”,其它的配置文件也是按此种装配方式进行装配 正确答案:D 在 spring的@Transactional注解详细用法 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! spring的@Transactional注解详细用法Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API 提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用提供比其他事务API如JTA更简单的编程式事务管理API与spring数据访问抽象的完美集成事务管理方式spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。显然声明式事务管理要优于编程式事务管理,这正是spring 牧涛 --<-<-<@态度决定一切→_→。。。 ?博客园 ?首页 ?新闻 ?新随笔 ?联系 ?管理 ?订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib -nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、a ntlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.G A.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar 包 SpringMVC是一个基于DispatcherServlet(分发器)的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。 DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherSe rvlet的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。 spring配置文件各个属性详解
SpringMVC配置的基本步骤
S详细讲解SH中Spring事务流程
springMVC详解以及注解说明
Spring简介
全面分析 Spring 的编程式事务管理及声明式事务管理
多图详解Spring框架的设计理念与设计模式
Spring考试
spring的@Transactional注解详细用法
Spring Bean 配置说明
计算机软件,spring中事务管理器的配置
spring MVC配置详解