我们如何学习Spring 2.0

Java框架中,Spring可以说算是名声显赫的一个了,相信自Spring发布以来,它的思想以及它对Java EE的解决之道影响了无数的程序员的头脑以及项目的应用。现在Spring已经发布了2.0版本,意味着Spring进入了一个全新的时代。我的很多刚开始学习Spring的朋友经常问我:Spring2.0发布了,我们接下来该怎么学?Spring2.0还和以前的Spring一样么?以前学过了Spring,那么Spring2.0还需要重新学习么?。。。。。。是啊,引用一位大虾说过的话:IT真是哄眼球的地方。一个新的版本的发布就会让人摸不着头脑。那么,Spring2.0到底把Spring怎么样了呢?换句话说,Spring2.0,我们到底该拿你怎么办呢?

既然这样,我们在这里就主要的说一下Spring2.0到底怎么了。

一、              我们都知道,Spring的核心就是IoC容器。Spring的所有思想与特性就来自于这个核心的容器,所以可以预料,Spring2.0相当大的改进之一就是它的IoC容器。

1、    XML配置的改进

XML Schema这个强大的工具自从发布后就影响了一系列的项目。最有代表性的就是Servlet2.4的发布。基于最新XML Schema技术的Servlet配置文件的便利相信很多的人已经体会到了。而这次,Spring2.0的配置文件也不出所料的采用了XML Schema技术。基于XML SchemaXML配置语法使得SpringXML配置变的更加简单了。新的标签更加易于阅读与维护。Spring2.0并没有完全抛弃Spring 1.2.x以前的版本,因此,以前的Spring配置文件同样可以使用。但是如果你正在构建一个新的基于SpringApplication的话,我们的建议还是使用更加简单的Spring2.0

引用新的Spring2.0 DTDDOCTYPE声明:

                       "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

 

2、    新的bean的作用域

Spring1.2.x版本支持的bean的作用域——如singleton——现在已经被Spring2.0的新作用域完全取代。如果你使用的是新的Spring2.0DTD,那么它将不允许使用Spring上个版本的bean作用域。新的Spring2.0不仅提供了一些依赖Spring部署环境(比如web环境中的requestsession作用域bean)的额外的作用域,而且提供了所谓的hooks可以使用户创造自己的作用域。你可以使用 “scope” 属性来定义bean的生命周期作用域。

3、    配置文件的可扩展性

基于新的XML SchemaXML配置文件不单更加的简单了,而且具有了可扩展性。它允许开发人员或者第三方框架或产品的供应商开发自定义的标签,并且把这些标签嵌入到自己的Spring配置文件里。你可以在组件的特定配置中定义自己的DSLDomain Specific Language)。这样相信在不久的以后,会有第三方的供应商加入到Spring自定义标签的开发中,发布更加具有可应用性的实用标签。

二、              改进的面向方面编程(AOP

Spring 2.0AOP上有很大的改进。首先,AOP XML的配置更加简单了,Spring2.0引入了新的模式,支持定义从常规Java对象中发展来的切面,充分利用了AspectJ切入点语言,提供了完整类型的Advice(也就是没有多余转换和Object[] 参数操作)。另外,得意于Annotation的发展,Spring2.0提供了对@AspectJ切面的支持,这些切面可以在AspectJSpring AOP中共享,需要的仅仅是简单的配置。

三、              中间层

1、    XML里更为简单的声明性事务配置

Spring2.0关于事务的配置方式发生了重大的变化。早先1.2.x版本的配置依然有效,但是新的方式更加简洁。Spring2.0同时提供了AspectJ库,你可以使用它来生成更漂亮的事务性对象——甚至可以不是用Spring IoC容器产生的。

2、    JPA的提供

Spring2.0提供了JPA抽象层,在所起的作用与常规使用模式上,类似于SpringJDBC抽象层。

3、    异步的JMS

Spring2.0之前,SpringJMS的作用局限于发送消息和同步接收消息。这个功能封装在JmsTemplate中,并且不支持异步消息接收的功能。在Spring2.0中加入了异步的JMS功能,可以直接用消息驱动POJOs,非常方便。

4、    JDBC

JDBC的支持库中,加入了几个新的类。首先是NamedParameterJdbcTemplate,提供了在编写JDBC语句时,对使用命名参数(与之相对的是编写JDBC语句的时候只使用常规的占位符(‘?’))的支持。

另外一个新类是SimpleJdbcTemplate,致力于在使用Java 5+开发时更加简单的使用JdbcTemplate

四、              Web

1、    Spring2.0 MVC JSP标签库进行了大的更新,你会发现在使用Spring MVC编写JSP页面时会变得更加简单。这些标签都是来自JIRASpring用户通过投票方式产生的,拥有很大的通用性!

2、    Spring MVC合理的默认值

对于很多项目而言,遵守建立好的规范,使用合理的默认值,是项目所必须的... 现在在SpringMVC里,惯例优先(convention-over-configuration)的观点有了明确的支持。 这就意味着当你为控制器和视图建立一系列的命名规范时,你可以 充分 减少XML配置的数量,包括设置处理映射、视图解析、ModelAndView的实例等等。 对于开发快速原型来说,这有非常大的优势,并且越过代码库可以产生一定的连续性(通常是良好的)。

3、    加入了新的框架——Portlet

Spring2.0加入了新的Portlet框架,可以支持JSR-168 Portlet开发。

五、              更多特性

1、    动态语言的支持

Spring2.0现在支持动态语言编写的bean,包括JRubyGroovyBeanShell。更多的提供了整合能力。

2、    JMX

Spring2.0开始支持Notification,还可以声明式的控制MBean在一个MBeanServer上的注册行为。

六、              更多的更改

1、    一些以前被标记为@deprecated的类和方法Spring 2.0代码库中被完全删除了。 Spring团队决定把2.0版本作为一个新的开始,那些被deprecated的代码应该被除去而不是在可预见的未来继续在代码中出现。

下面的类/接口已经从Spring 2.0的代码中删除了。

ResultReader : 使用RowMapper接口代替。

BeanReferenceFactoryBean : 使用别名机制代替

BeanDefinitionRegistryBuilder : 使用BeanDefinitionReaderUtils类上的方法代替

BeanFactoryBootstrap : 考虑使用一个BeanFactoryLocator 或是自定义引导类代替

RequestUtils : 使用ServletRequestUtils代替

2、    Spring主代码中的Apache OJB支持被完全删除了; 但仍然可以在Spring Modules项目中找到Apache OJB的集成库。

3、    iBATIS SQL Maps 1.3支持被完全去除了。如果你还在使用iBATIS SQL Maps 1.3 请升级到iBATIS SQL Maps 2.0/2.1

我们到底该怎么做?

       说了这么多,那么我们到底该怎么办?是应该重新学习继续学习Spring 1.2.x版本然后再学习Spring2.0还是重新从头学习,亦或干脆放弃Spring

       我们的建议是这样的:

       作为Spring用户,为了更多的历史遗留系统代码的维护,我们并不能完全放弃的Spring1.2.x,因此我们应该去了解Spring2.0的新特性以及使用方法,并积极升级现有系统到Spring2.0

       作为初学者,你完全可以不放弃你学过的Spring知识,只是在今后的学习中进行知识的升级,将你了解到的、学到的及时升级到Spring2.0

你可能感兴趣的:(Old,Archive)