`
star65225692
  • 浏览: 273226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

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 等。 Silverlight游戏开发中的资源的处理和图像算法2
这是不是代表一种潮流呢?数据库向越来越小型化发展,甚至小型化到嵌入式了,我认为这在桌面级应用上还是很有市场的。

分享到:
评论

相关推荐

    spring3.0新特性

    spring3.0的新特性 以及注解简化mvc让他真正解耦合

    Spring 3.0 新特性

    **Spring 3.0新特性详解** Spring框架作为Java企业级应用开发的基石,自发布以来不断进化,其中Spring 3.0版本是其一个重要里程碑,引入了许多创新特性和改进,提升了开发效率和应用程序的可维护性。在这个版本中,...

    spring3.0新特性官方ppt资料

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

    Spring3.0新特性源码

    本文将深入探讨Spring 3.0的新特性,并结合源码分析其核心功能。 1. **泛型注解支持**:Spring 3.0开始支持泛型元数据,这意味着开发者可以为bean定义和方法参数使用泛型,使得类型检查更加精确,减少运行时错误。...

    spring3.0 全部jar包

    在Spring 3.0版本中,引入了许多新特性和改进,使得它成为当时开发人员的首选框架之一。 Spring 3.0的核心特性包括: 1. **依赖注入(Dependency Injection, DI)**:这是Spring框架的核心功能,允许开发者将对象...

    spring3.0jar包

    首先,Spring 3.0 引入了对Java 5和6的全面支持,这意味着它可以充分利用注解(Annotations)和泛型等现代Java特性。通过注解,开发者可以避免大量的XML配置,使得代码更加简洁、易读。例如,`@Autowired` 注解用于...

    spring3.0_doc_api

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

    spring3.0 jar包

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

    spring3.0帮助文档(包含REST资料)

    Spring 3.0重要特性总结如下: ◆Spring表达式(SpEL):用于bean定义的核心表达式分析器 ◆对基于注释的组件的更多支持:允许通过元注释创建注释的“快捷方式” ◆标准化的依赖性注入注释:对Java中依赖性注入的...

    spring 3.0 jar 包

    这个版本引入了许多新特性,优化了性能,并提供了更好的开发者体验。以下是一些关于Spring 3.0及其jar包的关键知识点: 1. **依赖注入 (Dependency Injection, DI)**:Spring的核心特性之一,允许对象之间的依赖...

    spring 3.0 jar包

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

    spring3.0完整框架

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

    spring3.0的API

    Spring 3.0是Spring框架的一个重要版本,它引入了许多新特性和改进,极大地扩展了其功能和灵活性。本文将详细解析Spring 3.0 API的主要特性,帮助开发者更好地理解和利用这一强大的Java企业级开发工具。 一、核心...

    Spring3.0中文版

    Spring3.0是该框架的一个重要版本,它引入了许多新特性和改进,为开发者提供了更强大的功能和更好的灵活性。在这个CHM文件中,你将找到3.2版本的API文档,涵盖了所有类和常量字段值,这对于深入理解和使用Spring3.0...

    Spring3.0中文帮助文档

    以上只是Spring 3.0中部分关键特性和功能的概述,实际的中文帮助文档会详细解释这些概念,提供使用示例,并指导开发者如何在项目中有效地应用Spring框架。通过深入学习和实践,开发者能够充分利用Spring 3.0的优势,...

    spring3.0发行版

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

    Spring3.0Jar包

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

Global site tag (gtag.js) - Google Analytics