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

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新特性

    spring3.0的新特性 以及注解简化mvc让他真正解耦合

    spring3.0 全部jar包

    spring3.0 全部jar包 spring3.0 全部jar包 spring3.0 全部jar包

    spring3.0帮助文档(包含REST资料)

    Spring 3.0重要特性总结如下: ◆Spring表达式(SpEL):用于bean定义的核心表达式分析器 ◆对基于注释的组件的更多支持:允许通过元注释创建注释的“快捷方式” ◆标准化的依赖性注入注释:对Java中依赖性注入的...

    Spring3.0新特性

    这是一个详细介绍Spring3.0新特性的文档

    Spring 3.0就这么简单_Part3.pdf

    《Spring 3.0就这么简单》语言简洁,实例丰富,可帮助读者迅速掌握使用Spring3.0进行开发所需的各种技能。《Spring3.0就这么简单》适合于具有一定Java编程基础的读者,以及在Java平台下进行各类软件开发的开发人员和...

    spring3.0jar包

    spring3.0 开发包,开发J2ee,值得拥有

    Spring 3.0就这么简单源代码

    《Spring3.0就这么简单》的主旨就是帮助读者尽快上手,掌握Spring3.0的核心内容,正确地进行项目实战,同时汲取Spring的思想,并最终将这种思想灵活运用到实际工作中。《Spring3.0就这么简单》主要介绍了Spring3.0的...

    Spring3.0中文帮助文档

    spring3.0的中文帮助文档和权威开发指南

    Spring3.0新特性源码

    Spring3.0新特性源码Spring3.0新特性源码

    spring3.0的API

    spring3.0的API,spring3.0的API

    spring3.0MVC中文教材

    spring3.0MVC中文教材

    spring3.0 jar包

    spring3.0 jar包

    spring3.0 api

    spring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 api

    Spring3.0学习文档

    Spring3.0学习文档主要讲解的是IOC和AOP 静态代理、动态代理这些内容是Spring3.0中最难理解的重点知识点

    spring3.0 项目源码

    spring3.0 项目源码 spring3.0 注解 的学习,spring mvc 完整项目, 请你好好学习一下!

    Struts2.1+Spring3.0+JPA1.0 .pdf

    Struts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdf

    spring 3.0 jar包

    spring 3.0 jar包,下载无需资源分,希望大家能够用得到,另外强烈鄙视那些上传资源不完整,不经过测试的人。

    spring3.0+spring mvc3.0+mybaits3.0

    spring3.0+spring mvc3.0+mybaits3.0

    spring3.0Mvc简单示例

    spring3.0Mvc简单示例 导入即可运行

Global site tag (gtag.js) - Google Analytics