`
DigitalSonic
  • 浏览: 216126 次
社区版块
存档分类
最新评论

Spring 3.0中的新增特性与增强特性

阅读更多

如果你使用Spring Framework已经有一段时间了,那么你一定注意到Spring经历了两个主要版本:Spring 2.0,发布于2006年10月,Spring 2.5,发布于2007年11月。是时候再来次大动作了,这就是Spring 3.0。

Java SE与Java EE支持
现在的Spring Framework基于Java 5,并且完全支持Java 6。而且,它兼容J2EE 1.4及Java EE 5,同时还引入了一些对Java EE 6的早期支持。

 

1、Java 5
为了利用Java 5特性,例如泛型、可变参数和其他语言改进,整个框架的代码都被修改过了。我们尽可能地保证代码能够向后兼容。我们现在一致使用的泛型Collection和Map,一致使用泛型FactoryBean,并且在Spring AOP API中有一致的桥接方法解析。泛型ApplicationListener只会自动接收特定的事件类型。所有的回调接口,例如TransactionCallback和HibernateCallback,可以声明泛型结果值了。总而言之,Spring的核心代码经过了彻底的修改,并为Java 5做了优化。


为了与Java 5的java.util.concurrent机制紧密结合,Spring的TaskExecutor抽象也被修改过了。我们为Callable和Future提供了一流的支持,还有ExecutorService适配器、ThreadFactory集成等等。这些特性都尽可能与JSR-236(Concurrency Utilities for Java EE 6)保持一致。此外,针对通过新的@Async注解(或者EJB 3.1的@Asynchronous注解)进行异步方法调用,我们也提供了相应的支持。

 

2、改进的文档
Spring的参考文档也不断被更新着,这样它才能完整地反映Spring 3.0的变化和新特性。尽管我们进了一切努力不在文档中犯错,但还是有些漏网之鱼。如果你发现了一些拼写错误或者更严重的错误,并能在午餐时挤出点时间的话,请将这些错误告诉Spring团队,提个事件 就可以了。

 

3、新的入门教程
现在有了一份新的开发基础Spring 3.0 MVC Web应用程序的教程。这个教程是一份独立的文档,你能在Spring Documentation 页面中找到它。

注意
要到Spring 3.0正式发布时才能获得该文档。
 

4、新的模块组织结构和构建系统
我们修改了框架的模块,并用每个模块jar一棵源码树的方式分别进行管理:

 

• org.springframework.aop
• org.springframework.beans
• org.springframework.context
• org.springframework.context.support
• org.springframework.expression
• org.springframework.instrument
• org.springframework.jdbc
• org.springframework.jms
• org.springframework.orm
• org.springframework.oxm
• org.springframework.test
• org.springframework.transaction
• org.springframework.web
• org.springframework.web.portlet
• org.springframework.web.servlet

注意
我们将不再提供包含几乎整个框架的spring.jar。

从Spring Web Flow 2.0开始,我们使用了新的Spring构建系统。这给了我们:

 

• 基于Ivy的“Spring Build”系统
• 一致的部署过程
• 一致的依赖管理方式
• 一致的OSGi Manifest生成方式

 

5、新特性概述
以下是Spring 3.0新特性的列表,我们稍后会更详细地介绍它们。

 

• Spring Expression Language
• IoC增强 / 基于Java的Bean元数据
• 从Spring Web Services迁移过来的对象 / XML映射功能(OXM)
• 全面的REST支持
• 更多@MVC注解
• 声明式模型验证
• Java EE 6早期支持
• 嵌入式数据库支持

 

针对Java 5的核心API更新
BeanFactory接口会尽可能地返回确定类型的Bean实例:

 

• T getBean(String name, Class<T> requiredType)
• Map<String, T> getBeansOfType(Class<T> type)

Spring的TaskExecutor接口现在扩展了java.util.concurrent.Executor接口:

 

• 扩展了的AsyncTaskExecutor支持带Future的标准Callable

 

新的基于Java 5的转换器API和SPI:

 

• 无状态的ConversionService和Converter
• 取代标准JDK PropertyEditor

 

指定类型的ApplicationListener<E>

 

Spring Expression Language
Spring引入了一种表达式语言,它在语法上很像Unified EL,但提供了更多功能。在定义XML和基于注解的Bean定义的时候,可以使用该表达式语言,此外,它也是Spring Portfolio中表达式语言支持的基础。该功能的详细信息请参考Spring Expression Language(SpEL)一章。

 

Spring Expression Language为Spring社区提供了一种能在所有Spring Portfolio产品中使用的、有良好支持的表达式语言。它的语言特性是由Spring Portfolio中项目的需求来驱动的,其中也包含工具的需求,例如,在基于Eclipse的SpringSource Tool Suite中的代码补全支持。

 

下面是一个例子,演示了如何用它来配置数据库属性。

 

<bean class="mycompany.RewardsTestDatabase">
<property name="databaseName"
value="#{systemProperties.databaseName}"/>
<property name="keyGenerator"
value="#{strategyBean.databaseKeyGenerator}"/>
</bean>

 如果你更喜欢用注解来配置你的组件,该功能也同样适用:

 

@Repository
public class RewardsTestDatabase {
@Value("#{systemProperties.databaseName}")
public void setDatabaseName(String dbName) { … }
@Value("#{strategyBean.databaseKeyGenerator}")
public voidsetKeyGenerator(KeyGenerator kg) { … }
}

控制反转(Inversion of Control,IoC)容器
基于Java的Bean元数据
如今,Java Config项目中的一些核心特性已经被添加到了Spring Framework项目中,这意味着现在Spring直接支持下面的这些注解了:

• @Configuration
• @Bean
• @Primary
• @Lazy
• @Import
• @Value

 

以下是一个Java类使用新JavaConfig特性提供基本配置的例子:

 

@Configuration
public class AppConfig{
private @Value("#{jdbcProperties.url}") String jdbcUrl;
private @Value("#{jdbcProperties.username}") String username;
private @Value("#{jdbcProperties.password}") String password;

@Bean
public FooService fooService() {
return new FooServiceImpl(fooRepository());
}

@Bean
public FooRepository fooRepository() {
return new HibernateFooRepository(sessionFactory());
}

@Bean
public SessionFactory sessionFactory() {
// wire up a session factory
AnnotationSessionFactoryBean asFactoryBean =
new AnnotationSessionFactoryBean();
asFactoryBean.setDataSource(dataSource());
// additional config
return asFactoryBean.getObject();
}

@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(jdbcUrl, username, password);
}
}
 

要让上面的代码运行起来,你需要将如下组件扫描配置加入应用程序上下文XML文件中。

 

<context:component-scan
base-package="com.myco.config"/>
 

在组件中定义Bean元数据
Spring组件中也同样支持添加了@Bean注解的方法,它们为容器提供了一个工厂Bean。详见“在组件中定义Bean元数据”一节。

数据层
对象 / XML映射功能(OXM)已经从Spring Web Services项目迁移到核心Spring Framework中了,可以在org.springframework.oxm包中找到它。更多关于OXM模块的信息,参见“使用O/X映射组装XML”一章。

Web层
Web层中最令人兴奋的新特性莫过于对构建RESTful Web服务和Web应用程序的支持了。此外,还有一些用于Web应用程序中的新注解。

全面的RESTful支持
通过对现有的注解驱动MVC Web框架的扩展,Spring Framework提供了构建RESTful应用程序的服务器端支持。客户端的支持则由RestTemplate类提供,它和JdbcTemplate、JmsTemplate这些模板类非常类似。无论是服务器端还是客户端的REST功能,都使用了HttpConverter来简化对象与对应的HTTP请求/应答中的表述的转换。

MarshallingHttpMessageConverter用到了之前提到的OXM功能。

请参考MVC和RestTemplate的相关章节以获取更多详细信息。

 

更多@MVC注解
新增了几个注解,例如@CookieValue和@RequestHeaders。详见“使用@CookieValue注解映射Cookie值”和“用@RequestHeader注解映射请求头属性”。

 

声明式模型验证
Hibernate Validator,JSR303

进行中,未包括在Spring 3.0 M3中。

Java EE 6早期支持
我们提供了对使用@Async注解(或EJB 3.1的@Asynchronous注解)进行异步方法调用的支持,还支持JSF 2.0、JPA 2.0等。

进行中,未包括在Spring 3.0 M3中。

支持嵌入式数据库
目前已经提供了对嵌入式Java数据库引擎的支持,包括HSQL、H2和Derby。

 

(以上内容翻译自Spring Framework 3.0 Reference M4第2章)

4
2
分享到:
评论
2 楼 DigitalSonic 2009-09-08  
Spring支持JTA做全局事务管理
1 楼 laitaogood 2009-09-08  
spring支持分布式事务管理吗?

相关推荐

    Spring3.0新特性

    - **更新与优化**:Spring 的参考文档已经进行了大幅度的更新,以反映 Spring 3.0 中的所有更改和新增特性。 - **错误报告**:虽然文档团队已经尽力确保文档无误,但难免会有疏漏。如果发现任何打字错误或其他更严重...

    spring 3.0 jar包

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,为Java开发者带来了许多新特性和改进。这个版本标志着Spring框架在企业级应用开发中的成熟,提供了更强大、更灵活的解决方案。 1. **依赖注入增强**: ...

    spring3.0完整框架

    这个压缩包中的"spring3.0"文件很可能包含了所有需要的Spring 3.0框架相关的jar包,包括核心库、AOP、Web、MVC等模块的jar,是搭建Spring 3.0环境所必需的。开发者可以通过这些jar包快速构建基于Spring 3.0的应用,...

    spring3.0发行版

    Spring 3.0是该框架的一个重要版本,它带来了许多新特性、改进和优化,旨在提升开发者效率和软件的可维护性。在这个发行版中,Spring引入了模块化设计,增强了对Java EE 6的支持,以及对Web MVC、AOP、数据访问和...

    Spring 3.0教程.pdf

    ### Spring 3.0新增特性 #### 异步支持 Spring 3.0引入了对异步方法的支持,这使得开发者可以轻松地处理非阻塞请求,提高系统的响应速度。 #### 改进的表达式语言(SpEL) Spring Expression Language (SpEL) 在...

    spring3.0学习

    标题 "spring3.0学习" 暗示我们要探讨的是Spring框架的一个重要版本——Spring 3.0。Spring是Java企业级应用开发中广泛使用的开源框架,它简化了依赖注入、事务管理、AOP(面向切面编程)等多个方面的工作。在Spring...

    Spring3.0学习笔记

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,引入了大量新特性,进一步增强了Spring的灵活性和可扩展性。在这个版本中,Spring框架的改进和增强主要集中在以下几个方面: 1. **依赖注入(Dependency ...

    spring3.0MVC中文教程

    - **Java5支持与注解配置**:Spring3.0全面支持Java5的特性,如泛型、注解和可变参数,简化了代码编写和维护。 - **Spring Expression Language (SpEL)**:引入了一种新的表达式语言,可用于基于XML和注解的bean定义...

    spring 3.0

    7. **AOP增强**:Spring 3.0的AOP模块增强了切面编程的能力,新增了基于注解的切面定义,如`@Aspect`、`@Before`、`@After`等,简化了切面的创建和管理。 8. **RESTful支持**:Spring 3.0通过`@RequestMapping`、`@...

    spring3.0技术手册

    根据提供的信息,“Spring 3.0技术手册”主要聚焦于Spring...通过以上介绍可以看出,Spring 3.0不仅增强了现有功能,还新增了许多实用的新特性,使得Spring框架更加完善和强大,能够更好地满足复杂的企业级应用需求。

    spring3.0依赖注入详解

    本文将深入探讨Spring 3.0中依赖注入的新特性,特别是如何使用`@Repository`、`@Service`、`@Controller`和`@Component`注解来标记类为Bean,以及如何利用`&lt;context:component-scan/&gt;`元素自动扫描和注册这些Bean。...

    spring-framework-3.0

    SpEL是Spring的表达式语言,它在Spring 3.0中得到增强,提供了更丰富的操作符和函数,可用于运行时计算和bean属性的动态访问。 总的来说,Spring Framework 3.0通过引入一系列改进和新特性,为开发者提供了更强大...

    spring-beans-3.0.xsd

    然而,随着Spring的发展,`spring-beans-3.1.xsd`在3.1版本中出现,引入了一些新特性以增强灵活性和可读性。例如,`&lt;bean&gt;`元素新增了`lazy-init`属性,可以指定bean是否延迟初始化,这有助于优化应用启动性能。`...

    Spring 3.x 企业应用开发实战

    Spring 3.0还加强了与WebSocket的集成,为实时通信提供了基础。 测试是企业级开发的重要部分,Spring 3.0引入了Spring TestContext框架,支持单元测试和集成测试,包括对Mockito等第三方测试库的集成,使测试工作变...

    spring-framework-reference3.0和2.5两个版本

    《Spring框架参考指南3.0与2.5版本解析》 Spring框架是Java开发领域中的一个核心组件,它提供了一种全面的编程和配置模型,旨在简化企业级应用的开发。本文将深入探讨Spring框架的两个重要版本:3.0和2.5,通过对比...

    Spring 3企业应用开发实战

    4. **SpEL (Spring Expression Language)**:Spring 3.0新增了表达式语言,提供了更为灵活的方式来处理依赖注入和配置,增强了框架的表达能力和可读性。 5. **增强的AOP支持**:Spring 3.0对面向切面编程(AOP)的...

    redis3.0 demo

    Redis 3.0是这个数据库系统的一个重要里程碑版本,它带来了许多增强特性和优化,旨在提升性能、稳定性和可扩展性。在这个“redis3.0 demo”中,我们可以期待看到如何利用这些新特性来构建实际的应用场景。下面,我们...

    springspring-framework-3.0.0.M2

    《Spring 框架 3.0.0.M2:深度探索与应用实践》 Spring 框架作为 Java 开发领域中的一个基石,自诞生以来就以其强大的功能和灵活性赢得了广大开发者的青睐。3.0.0.M2 版本是 Spring 的一个重要里程碑,它在原有基础...

Global site tag (gtag.js) - Google Analytics