`
kyo100900
  • 浏览: 639419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【翻译】spring配置全书(上)

阅读更多

作者简介:

 

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.springinac­tion.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 ”前缀。

 

25
7
分享到:
评论
14 楼 williamtwo 2011-12-15  
     
13 楼 daoyongyu 2008-12-04  
楼主辛苦了,谢谢,向楼主学习!
12 楼 lovefly_zero 2008-07-18  
很感谢楼主的辛勤劳动
11 楼 sidubi 2008-07-17  
好东西,收藏啦
10 楼 JerryWan 2008-07-16  
   正好用的着~ 学习了·  楼主辛苦了····
9 楼 wm920 2008-07-10  
精华帖子··期待下的
8 楼 linliangyi2007 2008-07-10  
期待下集出现
7 楼 sunnylovewindy 2008-07-10  
楼主能传一些用Annotation代替xml的简易例子吗?谢谢
6 楼 lijie250 2008-07-09  
我只用到了IOC了,其余的作用我都不是很清楚!
5 楼 yanbingwei 2008-07-09  
good
4 楼 itsynclbw 2008-07-09  
还不错,学习啦
3 楼 zgqynx 2008-07-09  
支持你的翻译!
2 楼 robustwang 2008-07-09  
不错
1 楼 hantsy 2008-07-08  
refcard!=book

相关推荐

    【翻译】spring配置全书(下)——附PDF完整版下载

    《Spring配置全书》是一本深入探讨Spring框架配置的权威指南,它涵盖了Spring框架的核心配置、高级特性以及实际开发中的应用。此PDF版本为下册,提供了全面且详尽的Spring配置知识,对于想要深入了解Spring的开发者...

    Spring Web MVC外文翻译

    ### Spring Web MVC 外文翻译知识点解析 #### 一、Spring Web MVC介绍 Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,它从 Spring 框架诞生之初就被包含其中。正式名称“Spring Web MVC”来源于其源...

    详细的Spring配置和Spring Boot-外文翻译

    《详细的Spring配置和Spring Boot》 在上一章中,我们深入探讨了控制反转(IoC)的概念及其在Spring框架中的应用。然而,这只是触及了Spring核心功能的表面。Spring提供了一系列服务,这些服务补充并扩展了其基本的...

    spring-framework-4-reference_spring-framework-4_中文翻译_

    《Spring Framework 4 参考指南》中文翻译版是一份详尽解读Spring Framework 4的文档,旨在帮助中文用户深入理解和应用这一强大的Java应用程序开发框架。Spring Framework是Java开发领域中的核心工具,它提供了一个...

    Java Spring 的框架简介外文文献加翻译

    Spring Boot 是Spring生态系统的另一个重要组成部分,它简化了Spring 应用的初始化和配置过程。Spring Boot 基于约定优于配置的原则,为常见的Java Web和微服务应用场景提供了一键启动的解决方案,大大加快了开发...

    Spring相关的外文文献和翻译,spring论文参考文献,Java

    这篇文档“Spring相关的外文文献和翻译.doc”很可能包含了Spring框架的最新研究、最佳实践和深入分析。外文文献通常会提供原汁原味的技术细节,对于理解Spring的底层机制和设计理念非常有帮助。而中文译文则方便国内...

    spring 中文翻译文档

    这个中文翻译文档集合提供了对Spring框架及其组件的详细解释,帮助开发者更好地理解和使用这个强大的工具。 "spring-framework-reference.pdf"是Spring官方文档的中文版,它详细介绍了Spring的核心特性,包括依赖...

    外文翻译Spring的MVC构架模式-CSDN下载

    此外,Spring Boot进一步简化了Spring MVC的配置,使得快速开发Web应用变得更加便捷。 总结来说,Spring MVC是一个强大且灵活的Web开发框架,其模型-视图-控制器架构为开发者提供了清晰的职责划分,有助于构建高...

    Spring相关的外文文献和翻译(毕设论文必备)

    本文将围绕“Spring相关的外文文献和翻译”这一主题,深入探讨Spring框架的重要知识点,并结合毕设论文的需求,为学生提供有价值的研究素材。 1. **Spring框架概述** Spring框架是于2003年由Rod Johnson提出的,它...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    《Spring Boot参考指南》是Spring Boot开发者的重要参考资料,它详细阐述了Spring Boot框架的核心特性、配置方式、自动配置原理以及如何构建微服务应用等关键知识点。Spring Boot是Java开发领域中一个极其流行的轻量...

    Spring+vue的微服务简介外文文献加翻译

    ### Spring+Vue的微服务简介外文文献加翻译 #### 概述 本文档主要介绍了如何运用Spring Boot、Vue.js以及MyBatis等技术构建一个基于微服务平台的版权预约登记系统。该系统旨在提高版权登记业务的便捷性和效率,...

    Spring2.5的国际化配置

    Spring 2.5 的国际化配置是一项关键功能,它允许应用程序根据用户浏览器的语言设置显示相应的文本。国际化使得软件能够适应全球范围内的用户,提供多语言支持。以下是对标题和描述中涉及知识点的详细解释: 1. **...

    spring 5.0.2官网文档-中文翻译

    总的来说,Spring 5.0.2中文翻译版的文档是开发者深入理解和使用该版本的关键资源。它详细阐述了各个模块的使用方法,包括核心容器、Web MVC、数据访问、测试和安全等,使得开发者无论在设计模式、最佳实践还是具体...

    spring-security书籍翻译

    有了中文翻译,学习曲线会变得平缓,便于快速掌握Spring Security的使用和配置。 通过阅读这本书的翻译,开发者可以深入理解Spring Security的工作机制,从而更高效地设计和实现安全控制。同时,源码解析将有助于...

    计算机专业Java外文翻译 中文+英文(Spring框架介绍)

    在服务定位和配置管理上,Spring的ApplicationContext接口提供了加载配置信息和获取bean实例的能力。 Spring的模块化设计是其另一个重要特点,它由多个独立的子框架组成,包括核心容器(Core Container)、数据访问...

    Spring mysql数据库的配置与链接

    - **引入SimpleJdbcTemplate**:在Spring配置文件中声明SimpleJdbcTemplate bean,或者在代码中通过@Autowired注解注入。例如: ```xml &lt;!-- applicationContext.xml 示例 --&gt; ...

    spring famework 基于注解配置示例

    为了启用注解配置,我们需要在Spring配置中添加`@Configuration`和`@ComponentScan`: ```java @Configuration @ComponentScan(basePackages = {"com.example.myapp"}) // 指定需要扫描的包 public class AppConfig...

    Craig Walls 著 张卫滨 翻译 - spring inaction (spring 实战 第四版 )

    《Spring in Action》第四版是由Craig Walls撰写,张卫滨翻译的一本权威Spring框架实战教程。这本书基于Spring框架4.0版本,详细介绍了如何利用这一先进的Java应用开发平台进行实践操作。Spring框架是Java世界中不可...

Global site tag (gtag.js) - Google Analytics