Spring 3.0新增特性与功能前瞻
2009-11-18 13:40
525 查看
大家对Spring的新版期盼已经,毕竟Spring 2.0,发布于2006年10月,Spring 2.5,发布于2007年11月;如果你使用Srping进行项目开发,肯定对目前Srping的功能能否满足你想买的需求提出过质疑,并期望某些功能可以在Spring 3.0版得到改进和支持.下面我们来看看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
从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 requiredType)
◆Map getBeansOfType(Class type)
Spring的TaskExecutor接口现在扩展了java.util.concurrent.Executor接口:
扩展了的AsyncTaskExecutor支持带Future的标准Callable
新的基于Java 5的转换器API和SPI:
◆无状态的ConversionService和Converter
◆取代标准JDK PropertyEditor
指定类型的ApplicationListener
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中的代码补全支持。
下面是一个例子,演示了如何用它来配置数据库属性。
如果你更喜欢用注解来配置你的组件,该功能也同样适用:
控制反转(Inversion of Control,IoC)容器
基于Java的Bean元数据
如今,Java Config项目中的一些核心特性已经被添加到了Spring Framework项目中,这意味着现在Spring直接支持下面的这些注解了:
◆@Configuration
◆@Bean
◆@Primary
◆@Lazy
◆@Import
◆@Value
以下是一个Java类使用新JavaConfig特性提供基本配置的例子:
要让上面的代码运行起来,你需要将如下组件扫描配置加入应用程序上下文XML文件中
<context:component-scan
base-package="com.myco.config"/>
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
从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 requiredType)
◆Map getBeansOfType(Class type)
Spring的TaskExecutor接口现在扩展了java.util.concurrent.Executor接口:
扩展了的AsyncTaskExecutor支持带Future的标准Callable
新的基于Java 5的转换器API和SPI:
◆无状态的ConversionService和Converter
◆取代标准JDK PropertyEditor
指定类型的ApplicationListener
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。 数据层 对象 / XML映射功能(OXM)已经从Spring Web Services项目迁移到核心Spring Framework中了,可以在org.springframework.oxm包中找到它。 Web层 Web层中最令人兴奋的新特性莫过于对构建RESTful Web服务和Web应用程序的支持了。此外,还有一些用于Web应用程序中的新注解。 全面的RESTful支持 通过对现有的注解驱动MVC Web框架的扩展,Spring Framework提供了构建RESTful应用程序的服务器端支持。客户端的支持则由RestTemplate类提供,它和JdbcTemplate、JmsTemplate这些模板类非常类似。无论是服务器端还是客户端的REST功能,都使用了HttpConverter来简化对象与对应的HTTP请求/应答中的表述的转换。 MarshallingHttpMessageConverter用到了之前提到的OXM功能。 更多@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。
相关文章推荐
- Android Studio 3.0 新特性,Android Studio 3.0新增的功能和更改
- Spring 3.0中的新增特性与增强特性
- VS2011最新版本 新功能 新增特性 简介Visual Studio 2011
- Spring3.0新特性
- Oracle11新特性:分区功能增强-Oracle新增复合分区
- 8 -- 深入使用Spring -- 2...5 Spring 3.0 新增的注解
- Spring Boot 2.0新增的Actuator端点的特性
- Spring Boot 2.0新增的Actuator端点的特性
- Android 4.1新增功能特性
- MongoDB 3.0 新增特性一览
- spring-boot-starter-swagger 1.2.0.RELEASE:新增分组配置功能
- Oracle11g新特性:在线操作功能增强-Oracle11g新增的不可见索引 (转载)
- Oracle11新特性——在线操作功能增强之新增的不可见索引
- servlet3.0新特性Servlet3.0引入的若干重要新特性,包括异步处理、新增的注解支持、可插性支持等等,为读者顺利向新版本过渡扫清障
- 最新Android Studio 3.0 Canary 1新增功能
- .NET Framework 1.1、2.0、3.0、3.5、4.0各版本新增功能
- Spring(16):新增功能:在超市订单系统中实现订单表的查询(采用MapperFactoryBean)
- MIDP3.0新增特性介绍
- Spring(18):新增功能:在超市订单系统中实现角色表的查询和添加操作
- .NET Framework 1.1、2.0、3.0、3.5、4.0各版本新增功能