spring配置

spring配置
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>

元素中,你可以放置“bean”的声明以及其它元素来配置你的应用程序上下文。“beans”命名空间是Spring配置文件中所有元素的父类,但它不是孤立的。Spring还包括其它七种以上

的命名空间,稍后我将会在本手册中一一介绍。如果你想使用其它命名空间的话,你需要事先声明它们。比如说,如果你想使用“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命名空间下的元素简介

元素 描述

为一个定义过的bean起一个别名

在Spring容器中定义bean元素

向bean的构造函数注入值或引用。这就是我们常说的构造函数注入。 用来描述Spring context或每个bean元素。虽然它会被Spirng容

器所忽略,但元素可以通过工具生成属于你的是

Spring context文档。

导入其它Spring context的定义。

使用方法来代替getter注入。指定一个方法,它会在运行被复写从

而返回一个指定的bean。这就是我们常说的getter注入。

允许为你的bean进行meta配置。仅在一些特殊场合下有用。

为bean的特定属性注入一个值或者引用。这就是我们常说的setter

注入。

用一个新的实现来代替bean的某个方法。

元素揭密

虽然有很多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 beans使用基于annotation的配置方式。如

果使用了元素,那么就没有必

要使用此元素了。

允许Spring自动扫描指定的包,并将其下的beans注册到

Spring容器中去。使用此元素与

作用相同。

排除那些不需要通过自动扫描

的类。

当自动扫描注册的beans时,指定哪些类会被自动扫描到。 注册一个load-time时的AspectJ weaver。

应该beans导出成MBeans。

在spring contextk 启动一个MBeam server 。

允许外部的properties文件作为配置文件。

允许注入那些不由Spring托管的对象。

Bean命名空间实例

下面的Spring配置文件使用了用来自动注册“com.springinactin.service”包下的beans:

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”>

在上面的配置文件中, 元素会自动扫描“com.springinaction.service”包下的类,并自动将那些标记有@Component, @Controller, @Repository, @Service或 @Aspect.的类全部注册到Spring容器中。

温馨提示:

尽量为你的最终用户提供外部配置文件。

将所有的配置都定义在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命名空间元素简介

元素 描述

声明一个Spring AOP advistor

声明一个after advice(比如说,在某个pointcut方法执行后,

调用某个方法。)

声明一个after-returning advice。(比如说,在某个pointcut

方法正确执行后,调用某个方法)

声明一个after-throwing advice。(比如说,当某个pointcut方

法抛出了异常,那么被该annoation标记的方法将被调用)。

声明一个around advice。(比如说,在某个pointcut方法执行前

后,都会调用某个方法)

定义一个aspect,包括一个或多个的pointcuts和advices。

允许aspects使用@AspectJ标注

声明一个before advice(比如说,在某个pointcut执行前,先执

行某个方法)

大多数AOP元素的父元素。

定义一个AOP Introduction。

可选。与aspectj-autoproxy共同指定基于@AspectJ标注的beans

建立proxy.

声明一个pointcut(比如说,可供某个advice使用)

为beans声明一个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()方法的执行。标有 advice用来配置当plunder()执行时,立即调用pirateTalker bean的sayAvastMeHearties()方法;类似的,当plunder()方法调用成功时,sayYarr()方法同样也会触发。

温馨提示:

使用@AspectJ annotation来减少AOP相关的配置文件数量。

“aop”命名空间下的元素可以非常轻松的将POJO变成aspects。而元素可以单独使用,无需“aop”命名空间下的其它元素进行配合使用。一旦在你的spring配置文件中配置了,你可以在你的Java代码中随意使用@AspectJ annoation,比如@Aspect,@Pointcut,@Before以及@After。在Spring In Action 2nd的第四章4.3.2节有更多细节。

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命名空间元素简介

元素 描述

定义一些环境设置用于JNDI lookup。

声明一个引用,用来从JNDI中获取对象。

声明一个local stateless session EJB的引用。

声明一个remote stateless session EJB的引用。

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”>

第一个元素配置了一个叫“Hispaniola”的bean,它实际上引用的是一个EJB2的remote stateless session bean。这里EJB的home interface可以通过JNDI名称“java:comp/env/ejb/PirateShip”找到。属性“resource-ref”表示应该值会自动加上“java:comp/env/”前缀。EJB的实现方法定义在PirateShipEjb业务接口中。

另一个元素用于从JNDI获取对象的引用(它可以是一个EJB3 session bean或一个普通pojo)。对象会在这个叫“pirate/Parrot”的JNDI中获得。注意这里我们将“resource-ref”属性配置为“false”,所以该jndi-name不会加上“java:comp/env”前缀。

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命名空间元素简介

元素 描述

为基于JCA JMS destination listener配置一个容器。

为标准的JMS destination listener配置一个容器。

声明一个JMS destination listener。可用来创建

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”>

配置了一个容器,专门用于处理到达JMS connection factory里的topics

或queues的消息。在这个元素里,你可以声明一个或多个元素,用来响应各自的

topics。在这个例子中,单独的会在消息到达“queue.bottle”这个topic时,调用“messageHandlerService”bean的readMessageFromBottle()方法。

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命名空间元素简介

元素 描述

配置一个用BeanShell编写的bean。

配置一个默认设置,可作用于所有的scripted beans。

声明一个由Groovy script实现的bean。

允许直接将scripted beans的代码写在Spring XML配置中

去。

声明一个由JRuby script实现的bean。

为一个scripted bean注入值或引用。

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” />

元素建了一个由Groovy script实现的bean,名字叫Compass.groovy并且放在classpath的根目录下。refresh-check-delay属性表示每10秒钟看看该script是否改变了,然后对其进行相应的update和reload操作。

元素建了一个由Ruby(指定为JRuby) script实现的bean,名字叫PirateHat.rb。它实现了PirateHat接口并每分钟都会检查是否需要update。

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命名空间元素简介

元素 描述

声明具备事务性质的advice。

用@Transactional annotation来配置Spring的事务规则。 为一个或多个方法声明Spring事务的规则。

配置一个JTA事务管理,能自动感知WebLogic,Websphere

或OC4J等应用程序器。

为一个给定的方法签名(method signature)描述事务规则 TX命名空间实例

在下面的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*”

已经加入到Spring2.5中用于自动检测由WebLogic,WebSphere或OC4J提供的JTA事务管理。它默认是以叫“transactionManager”的bean配置在Spring context 中的。

接下来,建立了一个AOP advice用于声明事务处理规则。在这个例子中,任何以“plunder”为前缀的方法都会得到一个事务。其它方法的规则则是“support”事务,并不要求一定会有事务来参与。最后,这个从先前aop命令空间借用的例子使用了具备事务性质的advice 来配置成一个AOP advistor。定义在这儿的pointcut只对Pirate类的所有方法起作用。

温馨提示:

Java事务配置规则

如果你正在考虑压缩Spring配置的XML数据的话,考虑用元素试试吧。一旦该元素配置好了,你可以使用开始使用annotation来配置你的beans,而且只要使用@Transactional来定义事务边界和规则即可。你可以看看Spring In Action 2nd 第六章6.4.4节了解更多内容。

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命名空间元素简介

元素 描述

引用一个类型的静态字段,并将它的值在Spring中配置为

bean。

声明一个list的值或引用为Spring的一个bean。

将一个map声明为一个bean。

使用java.util.Properties来读取一个properties文件,

并将其暴露成一个Spring bean。

将一个集合(set)声明为一个bean。

引用一个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”>

Yo ho ho

Yarr

hearties!

me

Avast

down

Blow

me

元素用来建一个持有String的list。元素则是用来建立一个Pirate类的常量字段“PIRATE_CODE”(该字段是public static标识符)的引用。最后,元素先从“pirate”bean得到它的“treasure”属性,再从“treasure”得到它的属性“doubloonCount”,再将这个“doubloonCount”暴露在Spring context中。(注意上面配置文件中的“pirate.treasure.doubloonCount”里面的pirate是已经配置在Spring context中的bean,这里作者并没有配置出来。)以上三个配置实例里,都通过util命名空间元素将其暴露在Spring context 中去了,然后你可以随意将它们注入到其它的beans中去。

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配置文件各个属性详解 分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere 目录(?)[+]一、引用外部属性文件 classpath:mail.properties classpath:jdbc.properties 我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。 注意: 而在spring2.5的版本中提供了一种更简便的方式,如: 1. 这样以后要使用属性文件中的资源时,可以使用${属性名}来获得。 二、常用数据源的配置 第一种是:DBCP数据源,(需要加入2个jar文件,在spring中的lib下 jakarta-commons/commons-dbcp.jar和commons-pools.jar)主要配置如下:

SpringMVC配置的基本步骤

Springmvc框架配置步骤 小弟是个新手,有不对的地方请tell me,一起研究探讨。谢谢。 1062140832@https://www.360docs.net/doc/1617953207.html, 配置springmvc框架其实不是很难,要现有一个总体的认识,确定要分几步,每一步主要是干什么,不要太盲目。 以为web.xml是项目的入口,所以所有的配置文件,都必须引入到wem.xml中,不然,配置了等于没用。所以,要先从入口入手。 配置web.xml 1、首先引入springmvc-servlet.xml文件 springMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/mvc/springmvc-servlet.xml 1 2、将spring加载到web.xml中 org.springframework.web.context.ContextLoaderListener 3、配置上下文路径 contextConfigLocation /WEB-INF/spring/spring.xml,/WEB-INF/spring/spring-*.xml 说明:如果有很多的关于spring的配置文件,建议分开写,比如事务一个文件(spring-transaction.xml),springmvc-hibernate.xml一个配置文件,这样方便读写。

S详细讲解SH中Spring事务流程

给你详细讲一下SSH框架的事物管理,希望对你有帮助。 Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单的配置就能轻松的对数据库进行crud操作,下面就hibernate+spring 的配置做一下剖析,一边与大家一起分享经验: 1、准备工作: 可以利用hibernate tools生成相关映射文件已经po对象、dao对象,dao 也可以自己手动编写,无非就是实现crud,如果通过继承hibernate提供的HibernateDaoSupport,则可以更轻松的实现 关键就在于配置文件,下面看一个样例:

springMVC详解以及注解说明

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。 我们可以使用 来方便地、一次性的声明者四个BeanPostProcessor。 1.Autowired... 提供对Spring 特有的Autowired 和Qualifier 注释。

Spring简介

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 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解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框架的设计理念与设计模式

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也提供了很多基础功能(事务管理、持久化框架集成等等),将

Spring考试

1. (单选题)下列关于Spring配置文件的说法不正确的是 o A. Spring默认是读取/WEB-INF/配置文件 o B. Spring的配置文件可以配置在类路径下,并可以重命名,但是需要在文件中指定 o C. 把文件放到src目录下,Spring也可以读到 o D. 可以通过在中的进行指定 Spring配置文件 正确答案:C 把文件放到src目录下,需要在web。xml里设置 contextConfigLocation /WEB-INF/classes/ 可以让spring读到 2. (单选题)下列关于Spring特性中IoC描述错误的是 o A. IoC就是指程序之间的关系由程序代码直接操控 o B. 所谓“控制反转”是指控制权由应用代码转到外部容器,即控制权的转移 o C. IoC将控制创建的职责搬进了框架中,从应用代码脱离开来 o D. 使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC 容器会根据XML配置数据提供给它

正确答案:A IOC是来完成相互依赖的对象的创建、协调工作。 3. (单选题)下列关于Spring的装配模式(default-autowire)描述不正确的是 o A. Spring中,至少有两种装配模式,按“类型”和“名字” o B. Spring中默认是按名字进行装配的 o C. 可以用default-autowire=”byType”配置按类型装配 o D. 一旦在一个Spring配置文件中配置了default-autowire=”byType”,其它的配置文件也是按此种装配方式进行装配 正确答案:D 在标签中指定default-autowire属性,那么对于子标签 如果没有单独的设置autowire属性,那么将采用父标签 的default-autowire属性的模式,如果单独设置了autowire 属性,则采用自己的模式 4. (单选题)下列选项关于Spring的核心机制——依赖注入的描述正确的是 o A. 所谓依赖注入就是明确地定义组件接口,独立开发各个组件,然后根据组件间的依赖关系组装运行的设计开发模式 o B. Spring不负责管理bean之间的关系 o C. 节点有可选的子节点,用于注入bean的属性 o D. 在Spring的配置文件中,使用来创建Bean的实例 正确答案:B Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用java语言的反射功能实例化Bean并建立Bean之间的依赖关系。spring的ioc容器在完成这些底层工作的基础上,还提供了bean实例缓存,生命周期管理,bean实例代理,事件发布,资源装载等高级服务 5.

spring的@Transactional注解详细用法

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

Spring Bean 配置说明

Spring配置文件的根元素,包含一个或多个bean元素。 default-autowire属性:默认的bean自动装配模式。可选5种模式。 no:不使用自动装配。Bean的引用必须通过ref元素定义。 byName:通过属性名字进行自动装配。 byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType 的自动装配。如果没有匹配的bean,则什么都不会发生,属性不会被设置。如果这是你不想要的情况(什么都不发生),通过设置dependency-check="objects"属性值来指定在这种情况下应该抛出错误。 constructor:这个同byType类似,不过是应用于构造函数的参数。如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。 autodetect:通过对bean 检查类的内部来选择constructor或byType。如果找到一个缺省的构造函数,那么就会应用byType。 default-dependency-check属性:默认的依赖检查模式。可选四种。 none :不进行依赖检查。没有指定值的bean属性仅仅是没有设值。 Simple:对基本类型和集合(除了合作者外,比如其他的bean,所有东西)进行依赖检查。Object:对合作者进行依赖检查。 all :对合作者,基本类型和集合都进行依赖检查。 default-lazy-init属性:默认延迟加载。True 或False 。 用于告诉Spring容器一个类以及它是如何配置的。 class属性:Java Bean 类名。 id属性:Java Bean在BeanFactory中的唯一标识,代码中通过BeanFactory获取JavaBean 实例时需以此作为索引名称。 name属性:同上,如果给bean增加别名,可以通过name属性指定一个或多个id。singleton属性:指定此Java Bean是否采用单例(Singleton)模式,如果设为“true”,则在BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory获得此Java Bean实例的引用。反之,如果设为“false”,则通过BeanFactory获取此Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。 abstract属性:设定ApplicationContext是否对bean进行预先的初始化。 parent属性:定义一个模板。 autowire属性:bean自动装配模式。可选5种模式。 no:不使用自动装配。Bean的引用必须通过ref元素定义。 byName:通过属性名字进行自动装配。 byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType 的自动装配。如果没有匹配的bean,则什么都不会发生,属性不会被设置。如果这是你不

计算机软件,spring中事务管理器的配置

spring MVC配置详解

牧涛 --<-<-<@态度决定一切→_→。。。 ?博客园 ?首页 ?新闻 ?新随笔 ?联系 ?管理 ?订阅 随笔- 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 org.springframework.web.servlet.DispatcherServlet< /servlet-class>