What's new in Spring 2.0?
不知不觉间,Spring 2.0的RC2已经发布了。看着这个在Java界声望极高的Framework终于下定决心做出了大版本的升级,我想,大家肯定会心里痒痒的吧。毕竟,Spring从刚刚开始步入大家的视线开始直到今天,正式版本也不过只做到1.2.8。这次Spring的大版本好的变动,无疑会给Java世界带来很大的震动。JavaEE 5.0也刚刚发布了,想到不久之后就会看到这两个对头的竞争,还真是觉得有趣。
So,what's new in Spring 2.0?我之前了解到的是,2.0里面的AOP会加入对AspectJ的支持。前两个刚去下载了RC2,惊奇地发现Document已经很完备了,真是不得不佩服Rod他们。只可惜没有中文版的Document,看来一看英文就头疼的朋友可能要等上一阵子了。下面简单总结一下2.0中的新东东。
So,what's new in Spring 2.0?我之前了解到的是,2.0里面的AOP会加入对AspectJ的支持。前两个刚去下载了RC2,惊奇地发现Document已经很完备了,真是不得不佩服Rod他们。只可惜没有中文版的Document,看来一看英文就头疼的朋友可能要等上一阵子了。下面简单总结一下2.0中的新东东。
IoC
Easier XML Configuration
XML的配置会更简单。我想这是大家最希望看到的了。不知道能不能改善XML Explosion的问题。
Extensible XML Authoring
可扩展的XML。这主要是提供给第三方Framework开发商用的,开发商可以扩展Spring的XML配置,把自己的特性加到里面去。好倒是好,但是会不会变得很乱啊...紧张中...
New Bean Scopes
在Spring 1.x中,Bean的Scope只有singleton和prototype两种。而在2.0中,针对不同的部署环境,增加了新的Scope,例如,针对Web开发就增加了request和session。同时,Spring 2.0还允许用户定义自己的Scope。
AOP
Easier AOP XML Configuration
利用AspectJ使AOP的XML配置变得更加简单,同时支持强类型的advice。
Support for @AspectJ Aspects
支持通过@AspectJ Annotation声明的Aspect。这样,这些Aspect就可以在AspectJ和Spring AOP间共享了。
Middle Tier (Data Access)
Easier Configuration of Declarative Transactions in XML
更简单的声明式事务。1.2.x中的事务声明方法仍然可以使用,但是新的方式会更简单。而且2.0版本还提供了一个AspectJ的类库,你可以用它对任何对象--甚至不是由Spring创建出的对象做事务处理。
JPA
新版本中添加了一层对JPA的抽象,其目的与原来的JDBC抽象层类似。
Asynchronous JMS
之前的版本中的JMS只支持产生消息。这个功能被实现的很好,但是对JMS的支持还很不够,如异步地产生和消费消息。新版本中添加了这些缺少的功能。
JDBC
在JDBC抽象层中也增加了几个值得注意的新类。一个是NamedParameterJdbcTemplate,它提供了对通过named parameter编写JDBC声明的支持(与通过传统的占位符“?”编写JDBC声明相反);另一个是SimpleJdbcTemplate,它的目的是进一步简化Spring JDBC 抽象层的核心类JdbcTemplate的使用方式,但是这个类只能在Java 5中使用。
Web
A Form Tag Library for Spring MVC
为Spring MVC添加一个丰富的JSP标签库是获得Spring用户最多选票的JIRA议题。Spring2.0就提供了一个功能十分全面的JSP标签库。Spring Team自己觉得这个标签库可以满足所有投票者的需求,让我们拭目以待吧!
Sensible Defaulting in Spring MVC
有的时候,项目中会有很多约定俗称的命名惯例。比如,Controller往往会被wire为类名去掉“Controller”这个单词,像ViewShoppingCartController类,往往会被wire为“viewShoppingCart”。Spring 2.0对这种默认的convention提供了显式的支持,这就可以大大简化Spring的配置工作。
Portlet Framework
新版本也提供了自己的Porlet框架。
Everything Else
Dynamic Languate Support综上所述,可以看出,Spring 2.0最大的新特性就是简化开发过程。在人人都批评Java企业应用平台过于复杂的今天,Spring能如此保持清晰的目标,以简化开发过程为第一目标,实在是很难得。然而,JavaEE 5也是打着简化开发过程的旗号发布出来的,但从目前来看,却没有打动广大开发人员的心。TSS和InfoQ上已经连续出现了几篇感叹“JavaEE is deading”的文章了,真是可怜Sun啊,总是费力不讨好。希望Spring能挑起简化开发过程的重任,给我们一种焕然一新的轻松感觉。
Spring 2.0现在可以支持不是用Java编写的Bean了。目前,Spring支持的动态语言有JRuby、Groovy和BeanShell。
JMX
对JMX的改动是进化性的,而不是革命性的。
Task Scheduling
新版本提供了对任务调度的抽象。
Java 5 Support
这个就不用多说啦。