`

Spring3.0带来的新特性

阅读更多

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

image

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等。

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

转载:http://blog.csdn.net/abigfrog/archive/2009/10/30/4748685.aspx

分享到:
评论

相关推荐

    spring3.0 jar包

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,为Java开发者带来了许多新特性和改进。这个版本标志着Spring框架在企业级应用开发中的进一步成熟,加强了对Java EE 6的支持,并引入了许多现代化的开发实践...

    spring3.0完整框架

    这个压缩包中的"spring3.0"文件很可能包含了所有需要的Spring 3.0框架相关的jar包,包括核心库、AOP、Web、MVC等模块的jar,是搭建Spring 3.0环境所必需的。开发者可以通过这些jar包快速构建基于Spring 3.0的应用,...

    spring 3.0 jar包

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,为Java开发者带来了许多新特性和改进。这个版本标志着Spring框架在企业级应用开发中的成熟,提供了更强大、更灵活的解决方案。 1. **依赖注入增强**: ...

    spring3.0发行版

    Spring 3.0是该框架的一个重要版本,它带来了许多新特性、改进和优化,旨在提升开发者效率和软件的可维护性。在这个发行版中,Spring引入了模块化设计,增强了对Java EE 6的支持,以及对Web MVC、AOP、数据访问和...

    Spring3.0Jar包

    Spring 3.0 是 Spring 框架的一个重要版本,发布于2009年,它带来了许多新特性和改进,极大地增强了 Java 开发者在企业级应用开发中的灵活性和效率。Spring 框架是一个全面的后端开发解决方案,核心特性包括依赖注入...

    spring 3.0 jar spring最新开发包

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,为Java开发者带来了许多新特性和改进。这个"spring 3.0 jar spring最新开发包"包含了该版本的所有核心组件和库,使得开发者能够进行高效且灵活的Java应用...

    spring3.0新特性官方ppt资料

    **Spring 3.0 新特性详解** Spring框架作为Java企业级应用开发的主流选择,其3.0版本的发布带来了许多显著的改进和创新。这个官方PPT资料深入剖析了这些新特性,使得开发者能够更好地利用Spring提升应用程序的效率...

    spring 3.0 src

    Spring 3.0引入了许多新特性,优化了核心模块,提升了整体架构的灵活性,为开发者带来了更为强大的功能和更高效的开发体验。 1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,允许开发者通过...

    spring3.0最新lib包

    Spring 3.0是Spring框架的一个重要版本,它在2009年发布,带来了许多新的特性和改进,显著提升了框架的灵活性和可扩展性。这个"spring3.0最新lib包"包含了Spring框架的不同模块,每个模块都有独立的JAR文件,允许...

    spring3.0jar包

    Spring 3.0是其一个重要版本,带来了许多新特性与改进,使得它更加灵活、高效且易于使用。 **主要模块解析:** 1. **org.springframework.context-3.0.5.RELEASE.jar**:这是Spring的核心模块,提供了上下文支持,...

    spring3.0_doc_api

    这个压缩包"spring3.0_doc_api"包含的是Spring 3.0的官方API文档,通常以CHM(Compiled HTML Help)格式呈现,这种格式便于离线查阅和搜索。 **Spring框架核心概念** 1. **依赖注入(Dependency Injection, DI)**...

    spring3.0完整jar包(绝对全面,不像一些说全且不全的资源)

    至于“spring3.0-lib”这个压缩包,很可能包含了Spring 3.0所有必要的JAR文件,包括上述各个模块的实现。在使用时,开发者需要根据项目需求选择合适的JAR添加到类路径中。为了确保项目运行正常,应仔细检查包含的JAR...

    spring3.0 项目源码

    Spring 3.0 是一个重要的Java企业级应用框架版本,它在2009年发布,带来了许多新特性和改进,极大地提升了开发效率和代码的可维护性。在这个项目源码中,我们可以深入理解Spring 3.0的核心概念,特别是注解的应用...

    Spring3.0帮助文档2

    Spring3.0作为其重要版本,引入了许多新特性和改进,为开发者提供了更高效、更灵活的开发环境。这份"Spring3.0帮助文档2"包含了关于该版本的详尽指南和参考资料,下面我们将深入探讨Spring3.0的关键知识点。 1. **...

    spring 3.0帮助文档

    Spring 3.0是Spring框架的一个重要版本,它在2010年发布,为Java开发者带来了许多增强特性和改进。这个版本标志着Spring框架在企业级应用开发中的成熟,提供了更强大、更灵活的解决方案。以下是一些核心知识点: 1....

    spring3.0帮助文档

    综上所述,Spring 3.0版本带来了许多重要的改进和新特性,不仅提升了开发效率,还增强了系统的可维护性和灵活性。无论是对于新手还是有经验的开发者来说,Spring 3.0都是一个值得深入学习和掌握的强大框架。

    Spring 3.0 API

    随着Spring 3.0的更新,带来了许多新特性和增强功能。文档详细介绍了Java 5的支持,以及文档的改进,新文章和教程的发布,新的模块组织和构建系统。新的特性包括核心API更新、Spring表达式语言(Spring Expression ...

    spring-framework-reference 3.0

    综上所述,Spring 3.0 的发布带来了许多重要的新特性和增强功能,使得Spring框架在当时成为了Java开发领域中最受欢迎和广泛使用的框架之一。这些新特性不仅提高了开发效率,还增强了框架的灵活性和扩展性,为开发者...

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

    从Spring 2.0升级到Spring 3.0.5是一个重要的版本迭代,因为每个新版本通常会引入新的特性和性能优化。 Spring 2.0是Spring框架的一个里程碑,它引入了AOP代理、JDBC抽象层、对JSF的支持以及对portlet的集成。然而...

Global site tag (gtag.js) - Google Analytics