- 浏览: 633821 次
- 性别:
- 来自: 北京
最新评论
-
2047699523:
java hibernate demo使用实例教程源代码下载: ...
hibernate延迟加载的原理与实现 -
在世界的中心呼喚愛:
hantsy 写道这种lazy的解释只对了一半,按java p ...
hibernate延迟加载的原理与实现 -
moguicy:
看了下时间,不是楼主是否还在开发
【翻译】Wicket启示录——理论与实践(一) -
xfan0828:
"最后但并不是最不重要的一点就是" BZ, ...
【翻译】深入浅出 EJB3.1(上) -
doudou87323:
十分感谢,正在学习中,受益匪浅
【翻译】深入浅出 EJB3.1(上)
作者简介:
Craig Walls 是 Texas-based 公司的软件开发人员,有着超过 13 年的开发经验,涉及的领域有通信,金融,零售,教育以及软件业等。他是 Spring Framework 的狂热拥护者,频繁的在当地 local user groups 讨论组和相关会议上演讲 Spring ,并且他的 Blog 上也有很多关于 Spring 的内容。
出版的著作有:
l Spring in Action, 2nd Edition, 2007
l XDoclet in Action, 2003
他的 Blog 是:
l http://www.springinaction.com
所参与的项目:
l Committer to XDoclet project;
l Originator of Portlet and Spring modules for XDoclet
本手册主要是将分布于文档中的那些零散的配置文件部分统一成一个比较系统的整体。结合 Spring 文档一起查阅也许能节省你一些时间。不过,并不推荐你全部掌握;很多陌生的元素或标签只应用于特定场合。本手册英文版本可以在: http://java.dzone.com 下载。
Spring 配置全书
关于 Spring 的配置
Spring Framework 总是不断的改变着 Java 企业开发的方向,它用一种松耦合的方式来配置和组装应用程序对象和业务对象,比以往的 Java 企业开发来的更加简洁。一旦你开发了基于 Spring 的应用程序,在 Spring 上下文配置的那些资源简直就是唾手可得。
依赖注入是 Spring 容器的核心
尽管 Spring Framework 可以做很多事,但依赖注入却是 Spring 容器提供的最基本的功能。
任何稍微复杂一点的应用程序都至少由两个或两个以上的对象协作在一起,共同完成一些业务逻辑。以往的 Java 企业开发,每个对象都要自己去主动获得他们所引用(或依赖)的对象,才可正常运作。这将导致代码之间的紧耦合,难以测试。
有了依赖注入后,对象所依赖的资源则可通过外部来获得。换句话说,对象所依赖的资源是按照它们的需要给注入进去的。对于基于 Spring 的应用程序来说,是 Spring 容器将这些对象所依赖的资源帮助实现注入依赖的。
用 XML 来配置 Spring
到了 Spring2.0 , Spring 鼓励你使用基于 XML Scheme 的配置方式来应用于你的系统,这比起过去基于 DTD 的方式要更加灵活。一个典型的 Spring2.5 配置文件至少拥有以下结构:
<?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd> <!-- place configuration details here --> </beans>
Beans 命名空间简介
Schema URI
www.springframework.org/schema/beans
Schema XSD
www.springframework.org/schema/beans/spring-beans-2.5.xsd
beans 命名空间是Spring 命名空间的核心,也是你配置Spring 时使用最多的一个。根元素是<beans> ,它不仅可以包含一个或多个<bean> 子元素,而且还可以包含其它命名空间的元素,甚至在<beans> 下你可以不配置任何<bean> 子元素。
Spring XML 图表的一些约定
Spring XML 图通常使用以下符号来表示哪些元素是必选的,可选的以及它们之间的包含关系。
Bean 命名空间下的元素简介
<bean> 元素揭密
虽然有很多 XML 元素可以用来配置 Spring context ,但也许你用的最多的可能还是 <bean> 元素。因此,让你深入了解 <bean> 标签是十分必要的。
Bean 命名空间实例
下面的 Spring XML 配置文件配置了两个 beans ,其中一个注入到另一个中去:
<?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd”> <bean id=”pirate” class=”Pirate”> <constructor-arg value=”Long John Silver” /> <property name=”map” ref=”treasureMap” /> </bean> <bean id=”treasureMap” class=”TreasureMap” /> </beans>
第一个 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) 建立的时候,可以使用 <import> 元素将它们全部组装起来:
<import resource=”service-layer-config.xml” /> <import resource=”data-layer-config.xml” /> <import resource=”transaction-config.xml” />
Context 命名空间简介
Schema URI
www.springframework.org/schema/context
Schema XSD
www.springframework.org/schema/context/spring-context-2.5.xsd
在 Spring2.5 中, context 命名空间主要用来提供多种 application context 特定的配置。它包括:支持基于 annotation 的配置方式, JMX 以及领域对象 (domain object) 的注入。
Context 命名空间元素简介
Bean 命名空间实例
下面的 Spring 配置文件使用了 <context:component-scan> 用来自动注册“ com.springinactin.service ”包下的 beans :
<?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:context=”http://www.springframework.org/schema/context” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd”> <context:component-scan base-package=”com.springinac¬tion.service” /> </beans>
在上面的配置文件中, <context:component-scan> 元素会自动扫描“ com.springinaction.service ”包下的类,并自动将那些标记有 @Component, @Controller, @Repository, @Service 或 @Aspect. 的类全部注册到 Spring 容器中。
温馨提示:
尽量为你的最终用户提供外部配置文件。
将所有的配置都定义在 Spring 配置文件中并不推荐。你根本别指望应用程序的管理员或最终用户会去研究 Spring XML 然后搞懂数据库的配置和其它特定布署细节,你不会真打算靠他们吧?相反,使用外部配置文件,我们可以使用 <context:property-placeholder> 这么来做:
<context:property-placeholder location=”file:////etc/pirate.properties”
定义在 /etc/pirate.properties 属性文件中的那些键值对现在可以在 Spring 配置文件中大显身手啦:
<bean id=”pirate” class=”Pirate”> <constructor-arg value=”${pirate.name}” /> </bean>
AOP 命名空间简介
Schema URI
www.springframework.org/schema/aop
Schema XSD
www.springframework.org/schema/aop/spring-context-2.5.xsd
aop 命名空间是用来在 Spring context 中声明 aspects, pointcuts 和 advice 的。同样,使用 @Aspectj
annotation 的话,也可以基于 annotation 方式来配置你的 aop 。使用 aspects 的话,可以定义被你多个程序切点使用(或织入)的功能。
AOP 命名空间元素简介
AOP 命名空间实例
下面的 Spring 配置文件使用了 aop 命名空间来建一个 aspect 。
<?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:aop=”http://www.springframework.org/schema/aop” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd”> <bean id=”pirateTalker” class=”PirateTalker” /> <aop:config> <aop:pointcut id=”plunderPointcut” expression=”execution(* *.plunder(..))” /> <aop:aspect ref=”pirateTalker”> <aop:before pointcut-ref=”plunderPointcut” method=”sayAvastMeHearties” /> <aop:after-returning pointcut-ref=”plunderPointcut” method=”sayYarr” /> </aop:aspect> </aop:config> </beans>
该 aspect 由一个 pointcut 和两个 advice 组成。该 pointcut 用来定义所有对象 plunder() 方法的执行。标有 <asp:before> advice 用来配置当 plunder() 执行时,立即调用 pirateTalker bean 的 sayAvastMeHearties() 方法;类似的,当 plunder() 方法调用成功时, sayYarr() 方法同样也会触发。
JEE 命名空间简介
Schema URI
www.springframework.org/schema/jee
Schema XSD
www.springframework.org/schema/jee/spring-context-2.5.xsd
JEE 命名空间元素简介
JEE 命名空间实例
下面的 Spring 配置文件使用了部分 jee 命名空间元素,用来获取 Spring 容器外的对象,并且将这些对象作为 Spring 的 beans 。
<?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:jee=”http://www.springframework.org/schema/jee” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd”> <jee:remote-slsb id=”hispaniola” jndi-name=”ejb/PirateShip” business-interface=”com.pirate.PirateShipEjb” resource-ref=”true” /> <jee:jndi-lookup id=”parrot” jndi-name=”pirate/Parrot “ resource-ref=”false” /> </beans>
第一个元素 <jee:remote-slsb> 配置了一个叫“ Hispaniola ”的 bean ,它实际上引用的是一个 EJB2 的 remote stateless session bean 。这里 EJB 的 home interface 可以通过 JNDI 名称“ java:comp/env/ejb/PirateShip ”找到。属性“ resource-ref ”表示应该值会自动加上“ java:comp/env/ ”前缀。 EJB 的实现方法定义在 PirateShipEjb 业务接口中。
另一个元素 <jee:jndi-lookup> 用于从 JNDI 获取对象的引用(它可以是一个 EJB3 session bean 或一个普通 pojo )。对象会在这个叫“ pirate/Parrot ”的 JNDI 中获得。注意这里我们将“ resource-ref ”属性配置为“ false ”,所以应该 jndi-name 不会加上“ java:comp/env ”前缀。
评论
发表评论
-
【翻译】深入浅出 EJB3.1(下)
2009-05-07 23:37 8810Global JNDI names( 统一的 全局 ... -
【翻译】深入浅出 EJB3.1(上)
2009-05-06 20:59 11002终于有空将EJB3.1的最新文章与大家分享,原文请看: ht ... -
【翻译】Java EE 6体系结构的变革
2009-02-09 10:01 4443又看到 Reza 同学为 -
【翻译】Java EE 6体系结构的变革(完)
2009-02-09 10:00 6409JSF 2.0 尽 ... -
垃圾收集器是一个“宝贝收藏家”?
2008-11-25 23:58 2991原文请看:http://java.dzone.com/ar ... -
深入理解JBoss Cache3.0——Naga
2008-11-12 09:12 9654原文请看: http://java.dzone.com/ ... -
【翻译】Rod Johnson——关于当选JCP执行委员会的之言片语
2008-11-03 10:42 3134SpringSource 在上月底被宣布被加入 JCP ... -
【翻译】EJB3.1真的来了吗?EJB3.1系列文章(五) 终章
2008-10-16 14:37 9085历时9 个多月的EJB3.1 系列文章终于要划上圆满的句 ... -
【翻译】Rod Johnson——平衡的质疑:Spring维护策略的再次调整(完)
2008-10-09 09:33 3968不管你承不承认,Spring实际上已经是实事上JAVA企业开 ... -
【云计算专家Joseph Ottinger系列】应用服务器本质论
2008-09-08 08:58 3423原文请看: http://www.t ... -
Spring破坏了JEE规范吗?
2008-09-02 13:33 4043[TTS 编辑注:这是 TTS 论坛上的原帖。我现在把它 ... -
【翻译】spring配置全书(下)——附PDF完整版下载
2008-07-14 12:30 10755JMS 命名空间简介 Schema URI ... -
【翻译】EJB3.1真的来了吗?EJB3.1系列文章(四)
2008-06-18 23:10 38140前言 Raza 同学终于又出 EJB3.1 文章了 ... -
【翻译】Rod Johnson——Spring的宣言:开源,开放(完)
2008-06-10 16:51 5560前言 这是本文的第二部分,里面提到并回答许多Spring用 ... -
【翻译】Rod Johnson——Spring的宣言:开源,开放
2008-06-06 13:06 6042原文地址: http://blog.sp ... -
【翻译】EJB3.1真的来了吗?EJB3.1系列文章(三)
2008-05-01 13:53 8720文本继续和大家分享EJB3.1特性,今天谈到的EJB Lite ... -
【Danny hui】运用抽象工厂模式自己动手写一个IoC
2008-04-23 16:34 6279本文的作者Danny hui似乎是TTS上的新人,我从Goog ... -
【翻译】Wicket启示录——理论与实践(三)完
2008-04-11 01:09 6179接下来,我们再看看EditContact类,把新建联系人的话和 ... -
【翻译】Wicket启示录——理论与实践(二)
2008-04-09 23:47 5822第二部分 实践 Application(应用程序) 与 ... -
【翻译】Wicket启示录——理论与实践(一)
2008-04-09 23:15 6711序 Wicket,当多数人看到它时,也许又是带着惯性思考 “j ...
相关推荐
spring配置全书PDF完整版 博文链接:https://superleo.iteye.com/blog/214535
毕业设计中的外文翻译,可以直接使用,借鉴
Spring Security-3.0.1 中文官方文档(翻译版) 这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进 行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行...
包含翻译后的API文档:thymeleaf-spring4-3.0.3.RELEASE-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.thymeleaf,artifactId:thymeleaf-spring4,version:3.0.3.RELEASE 使用方法:解压翻译后...
Spring Boot中文文档提供了详细的中文翻译和说明,包括了基本概念、使用方法、配置参数、代码示例等,可以帮助用户快速上手和深入理解Spring Boot的使用。该文档还提供了丰富的链接和参考资料,方便用户深入学习和...
包含翻译后的API文档:spring-websocket-5.0.8.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework:spring-websocket:5.0.8.RELEASE; 标签:springframework、spring、...
Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。 第一章 序言 第二章 简介 2.1.概述 2.2.背景 2.3.模块 2.4.许可证信息 2.5.支持 第三章 背景 3.1.控制反转 第...
包含翻译后的API文档:spring-aop-5.1.3.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework:spring-aop:5.1.3.RELEASE; 标签:springframework、spring、aop、中英对照文档、...
6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...
6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...
史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config) 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪...
一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库...
Spring-Boot中application配置文件的所有属性,对我们平时开发搭建Spring Boot项目时有很大的帮助,基本上我们平时可以用到的,里面都有哦 。。。
MyBatis-Spring 会帮助你... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...
计算机相关专业本科生毕业设计标准外文翻译一篇(外文+翻译)
Spring Cloud为开发人员提供了工具,可以快速构建分布式系统中的一些常见模式(譬如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领袖选举(字面翻译)、分布式会话、集群状态)。...