`
dengzhangtao
  • 浏览: 678925 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring2.0-2.5-3.0变化

阅读更多
忽然间想知道spring2.0到2.5 再到3.0的变化,就到网上搜索一下。方便查看而已


2.5的新特性

Spring2.5rc1发布了,一直想知道它葫芦里卖什么药,以下是文档里的change.log

  • 1. JDK版本: JDK至少要1.4.2以上,如果仍然打算使用1.3的话就请用2.0.6/2.0.7版本吧。
  • 2. Jar包:SpringMVC 不再使用spring.jar 这个庞大的包了。 Spring-webmvc.jar, spring-webmvc-portlet.jar 可以在 lib/modules 目录下找到,而且对于Struts1.* 的支持的包也应该改成 spring-webmvc-struts.jar了。
  • 3. XML配置:推荐使用XML metadata格式,不过先前的DTD仍然支持。需要注意的一点是,Spring1.2的DTD继续使用“singleton”属性,但是新的Spring2.0 DTD不允许使用“singleton”属性了,改成“scope”属性来描述bean的生命周期。
  • 4. 废弃的类与方法:有些在先前版本标注过“@deprecated”的类与方法已经完全被废弃了。
  • 比如:
  • ResultReader : 被 RowMapper 接口取代。
  • BeanFactoryBootstrap : 考虑使用 BeanFactoryLocator 或自定义的bootstrap类来代替。
  • 5. Apache OJB:注意Spring源代码中已经完全把这个去掉了,但与之整合的类仍然可以在Spring Modules project找到。https://springmodules.dev.java.net/
  • 6. iBATIS:注意Spring已经不再支持iBATIS 的1.3版本了, 如果想继续的话,请升级到2.3以上吧。
  • 7. Hibernate:注意Spring已经不再支持Hibernate 3.1之前的版本了,也就是说2.1,3.0的版本也无法使用了。如果仍然要用的话,推荐使用Spring的2.0.6/2.0.7版本。
  • 8. JDO:注意Spring已经不支持JDO1.0了。同样,你可以升级到2.0以上版本,或者使用Spring的2.0.6/2.0.7版本。
  • 9. UrlFilenameViewController :这个东东我也没有接触过,这里,我就简单翻译一下吧。
  • “考虑到嵌套路径的请求,视图名称现在决定叫UrlFilenameViewController了,这是一个突破性的改变,并且意味着如果你从Spring1.* 升级到Spring2.0 你可以使用该类从而减少Spring Web MVC的配置工作。”

大家在使用新版本之前请先注意这些改变,也许对您的系统来说,是很重要的。

spring3.0特性

一、首先,模块的组织更加的细致,从那么多的jar分包就看的出来:



Spring的构建系统以及依赖管理使用的是Apache Ivy,从源码包看出,也使用了Maven。

Maven确实是个好东西,好处不再多言,以后希望能进一步用好它。

二、新特性如下:

Spring Expression Language (Spring表达式语言)

IoC enhancements/Java based bean metadata (Ioc增强/基于Java的bean元数据)

General-purpose type conversion system and UI field formatting system (通用类型转换系统和UI字段格式化系统)

Object to XML mapping functionality (OXM) moved from Spring Web Services project (对象到XML映射功能从Spring Web Services项目移出)

Comprehensive REST support (广泛的REST支持)

@MVC additions (@MVC增强)

Declarative model validation (声明式模型验证)

Early support for Java EE 6 (提前对Java EE6提供支持)

Embedded database support (嵌入式数据库的支持)

三、针对Java 5的核心API升级

  • 1、BeanFactory接口尽可能返回明确的bean实例,例如:
  • T getBean(String name, Class requiredType)
  • Map getBeansOfType(Class type)
  • Spring3对泛型的支持,又进了一步。个人建议泛型应该多用,有百利而无一害!
  • 2、Spring的TaskExecutor接口现在继承自java.util.concurrent.Executor:
  • 扩展的子接口AsyncTaskExecutor支持标准的具有返回结果Futures的Callables。
  • 任务计划,个人还是更喜欢Quartz。
  • 3、新的基于Java5的API和SPI转换器


无状态的ConversionService 和 Converters

取代标准的JDK PropertyEditors

类型化的ApplicationListener,这是一个实现“观察者设计模式”使用的事件监听器。

基于事件的编程模式,好处多多,在项目中应该考虑使用,基于事件、状态迁移的设计思路,有助于理清软件流程,和减少项目的耦合度。

四、Spring表达式语言

Spring表达式语言是一种从语法上和统一表达式语言(Unified EL)相类似的语言,但提供更多的重要功能。它可以在基于XML配置文件和基于注解的bean配置中使用,并作为基础为跨Spring portfolio平台使用表达式语言提供支持。

接下来,是一个表达式语言如何用于配置一个数据库安装中的属性的示例:

<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) { … }
}

又多一种表达式语言,造轮子的运动还在继续中!

五、基于Java的bean元数据

JavaConfig项目中的一些核心特性已经集成到了Spring中来,这意味着如下这些特性现在已经可用了:

@Configuration

@Bean

@DependsOn

@Primary

@Lazy

@Import

@Value

又来一堆的注解,无语了,感觉还是配置文件方便!:(

这儿有一个例子,关于一个Java类如何使用新的JavaConfig特性提供基础的配置信息:

package org.example.config; 

@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); 
    } 
} 

为了让这段代码开始生效,我们需要添加如下组件扫描入口到最小化的应用程序上下文配置文件中:

<context:component-scan base-package="org.example.config"/> 
<util:properties id="jdbcProperties" location="classpath:org/example/config/jdbc.properties"/> 


六、在组件中定义bean的元数据

感觉Spring提供了越来越多的注解、元数据,复杂性已经超出了当初带来的方便本身!

七、通用类型转换系统和UI字段格式化系统

Spring3加入了一个通用的类型转换系统,目前它被SpEL用作类型转换,并且可能被一个Spring容器使用,用于当绑定bean的属性值的时候进行类型转换。

另外,还增加了一个UI字段格式化系统,它提供了更简单的使用并且更强大的功能以替代UI环境下的JavaBean的PropertyEditors,例如在SpringMVC中。

这个特性要好好研究下,通用类型转换系统如果果如所言的话,带来的好处还是很多的。

八、数据层

对象到XML的映射功能已经从Spring Web Services项目移到了Spring框架核心中。它位于org.springframework.oxm包中。

OXM?研究下!时间真不够!

九、Web层

在Web层最激动人心的新特性莫过于新增的对构件REST风格的web服务和web应用的支持!另外,还新增加了一些任何web应用都可以使用的新的注解。

服务端对于REST风格的支持,是通过扩展既有的注解驱动的MVC web框架实现的。

客户端的支持则是RestTemplate类提供的。

无论服务端还是客户端REST功能,都是使用HttpConverter来简化对HTTP请求和应答过程中的对象到表现层的转换过程。

MarshallingHttpMessageConverter使用了上面提到的“对象到XML的映射机制”。

十、@MVC增强

新增了诸如@CookieValue 和 @RequestHeaders这样的注解等。

十一、声明式模型验证

支持JSR 303,使用Hibernate Validator作为实现。

十二、提前对Java EE6提供支持

提供了使用@Async注解对于异步方法调用的支持(或者EJB 3.1里的 @Asynchronous)

另外,新增对JSR 303, JSF 2.0, JPA 2.0等的支持。

十三、嵌入式数据库的支持

对于嵌入式的Java数据库引擎提供了广泛而方便的支持,诸如HSQL, H2, 以及Derby等。

这是不是代表一种潮流呢?数据库向越来越小型化发展,甚至小型化到嵌入式了,我认为这在桌面级应用上还是很有市场的。

8
1
分享到:
评论

相关推荐

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可。。启动tomcat前先修改jdbc.properties文件。由于lib文件较大,所以请自行导入相关lib包。

    struts2.0 spring2.5 hibernate3.0

    Struts2.0、Spring2.5和Hibernate3.0是Java Web开发中经典的三大框架,它们各自在应用程序的不同层面提供了强大的支持,并且通过合理的整合,可以构建出高效、灵活的MVC(Model-View-Controller)架构的应用程序。...

    struts2.0spring2.5hibernate3.0框架整合步骤

    ### Struts2.0、Spring2.5与Hibernate3.0框架整合步骤 #### Struts2.0配置 1. **引入Struts2.0相关的jar包:** 首先,确保项目中有所有必要的Struts2.0的jar包。 2. **配置web.xml中的过滤器:** ```xml ...

    Spring2.0 2.5定时触发器

    在Spring框架中,定时任务的处理是一个重要的功能,它允许开发者在特定的时间间隔执行某些任务,这正是“Spring2.0 2.5定时触发器”所涉及的核心内容。在Spring 2.0和2.5版本中,定时任务的实现主要依赖于`org....

    spring2.0升级到spring3.0.5的开发包

    5. **数据访问增强**:Spring 3.0对数据访问层进行了改进,增加了对JPA 2.0、Hibernate 3.6等ORM框架的支持,并且提供了统一的JDBC抽象层,简化了数据访问操作。 6. **Spring Expression Language (SpEL)**:Spring...

    spring-framework-v2.5+v5.1.rar

    本文将深入探讨Spring Framework从2.5版本到5.1版本的主要变化和关键特性。 1. Spring 2.5:里程碑式的升级 - AOP增强:Spring 2.5引入了基于注解的面向切面编程(AOP),使得开发者可以更方便地在类和方法上声明切...

    jbpm3.2.2+spring2.5+hibernate3.0+struts2.0

    jbpm负责流程管理,Spring2.5作为整体的容器,管理各个组件的生命周期和依赖关系,Hibernate3.0处理数据库交互,而Struts2.0则作为前端控制器,处理用户请求并展示结果。这样的组合在当时的开发环境中非常流行,因为...

    struts2.0+spring2.0+hibernate3.0整合

    使用的框架版本是Struts2.0.6、Spring2.5和Hibernate3.2,这些都是当时比较稳定的版本。JDK6.0是Java开发所需的运行环境,MySQL5.0是关系型数据库管理系统。 在开始整合前,我们需要准备数据库。在这个简单的注册...

    spring2.5+struts2.0+hibernate3.0例子 下载

    这个"Spring2.5+Struts2.0+Hibernate3.0例子"的压缩包文件,很可能是为了展示如何将这三个框架集成在一起,实现数据持久化、业务逻辑控制和视图呈现的无缝配合。开发者通常会在这个例子中找到配置文件(如web.xml、...

    spring2.5+struts2.0+hibernate3.0分页

    本项目基于经典的Java企业级开发框架——Spring 2.5、Struts 2.0和Hibernate 3.0实现了一个分页功能。下面我们将详细探讨这三个框架以及它们如何协同工作来实现分页。 首先,Spring 2.5是IoC(Inversion of Control...

    java7源码翻译-recap-spring:回顾春天

    2.0 ------&gt; 2006 -- Simplified XML Config Spring 2.5 ------&gt; 2007 -- Annotation Config Spring 3.0 ------&gt; 2010 - 2012 Spring 3.2 ------&gt; 2012 -- Support for Java7, Hibernate, Servlet 3.0 -...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    ### 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架 #### 一、概述 在当今的企业级应用程序开发中,采用MVC(Model-View-Controller)架构模式的框架组合变得越来越普遍。其中,Struts2、Spring与Hibernate...

    spring2.5+struts2+hibernate3.0JAR包集合

    标题 "spring2.5+struts2+hibernate3.0JAR包集合" 提及的是一个集成开发环境中的核心组件,这三个框架是Java Web开发中的重要工具,用于构建高效、可扩展的企业级应用程序。 Spring 2.5是Spring框架的一个版本,它...

    Spring2.5、3.0、3.1轻松入门+中级+高级教程14合一

    在本教程合集中,我们将重点探讨Spring的2.5、3.0和3.1版本,这三个版本分别代表了Spring发展历程中的重要里程碑。 1. **Spring 2.5** 引入了对Java 5注解的全面支持,显著简化了配置,特别是通过`@Autowired`注解...

    Spring加载XSD文件发生错误的解决方法

    Spring加载XSD文件发生错误的解决方法 在使用 Spring 框架时,可能会遇到加载 XSD 文件发生错误的...出现问题的情况往往是声明使用了一个高版本的 XSD 文件,如 3.0,但依赖的 Spring 的 JAR 包却是 2.5 之前的版本。

    spring3.0 references文档

    spring3.0是一个已经发展的很好的开源框架, 在spring2.0,2.5的基础上又添加了好多新特性 其中包括对REST的全面支持等 但是,目前还没有它的中文文档,这令大家学习起来有了很大的困难! spring3交流群:

    Spring2.5+Struts2.0+hibernate3.0+Dwr+jquery+displayTag

    自已写的一个demo 1 基于SSH,service采用 annotation注入减少配置 2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;...4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 ...

    spring2.5 struts2.0 hibernate3.1

    标题 "spring2.5 struts2.0 hibernate3.1" 涉及到的是一个经典的Java企业级开发框架组合,通常被称为“SSH”(Spring、Struts和Hibernate)。这个组合在过去的许多年里被广泛应用,为构建高效、可维护的Web应用程序...

    dubbo、dubbox编译所需jar包

    commons-lang-2.5.jar commons-logging-1.1.jar commons-validator-1.2.0.jar curator-framework-1.1.16.jar cxf-rt-frontend-simple-2.6.1.jar cxf-rt-transports-http-2.6.1.jar doxia-core-1.0-alpha-11.jar ...

Global site tag (gtag.js) - Google Analytics