spring3.0与3.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等。

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

==================================================================================================================

spring3.1新特性:

Spring 3.1与之前2.X的不一样,新版本把原来的spring.jar分解了,想要使用哪个功能就导入相应的jar,现给出一些包的说明

org.springframework.aop-3.1.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现 

org.springframework.asm-3.1.0.RELEASE--------------------Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar.3.0开始提供他自己独立的asmJar 

org.springframework.aspects-3.1.0.RELEASE----------------Spring提供对AspectJ框架的整合 

org.springframework.beans-3.1.0.RELEASE------------------SpringIoC(依赖注入)的基础实现 

org.springframework.context.support-3.1.0.RELEASE--------Spring-context的扩展支持,用于MVC方面 

org.springframework.context-3.1.0.RELEASE----------------Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等 

org.springframework.core-3.1.0.RELEASE-------------------Spring3.1的核心工具包 

org.springframework.expression-3.1.0.RELEASE-------------Spring表达式语言 

org.springframework.instrument.tomcat-3.1.0.RELEASE------Spring3.1Tomcat的连接池的集成 

org.springframework.instrument-3.1.0.RELEASE-------------Spring3.1对服务器的代理接口 

org.springframework.jdbc-3.1.0.RELEASE-------------------JDBC的简单封装 

org.springframework.jms-3.0.0.RELEASE--------------------为简化JMS API的使用而作的简单封装 

org.springframework.orm-3.1.0.RELEASE--------------------整合第三方的ORM框架,如hibernate,ibatis,jdo,以及 springJPA实现 

org.springframework.oxm-3.1.0.RELEASE--------------------SpringObject/XMl的映射支持,可以让JavaXML之间来回切换 

org.springframework.test-3.1.0.RELEASE--------------------Junit等测试框架的简单封装 

org.springframework.transaction-3.1.0.RELEASE-------------JDBCHibernateJDOJPA等提供的一致的声明式和编程式事务管理 

org.springframework.web.portlet-3.1.0.RELEASE-------------SpringMVC的增强 

org.springframework.web.servlet-3.1.0.RELEASE-------------JEE6.0Servlet3.0的支持 

org.springframework.web.struts-3.1.0.RELEASE--------------整合Struts的时候的支持 

org.springframework.web-3.1.0.RELEASE--------------------SpringWeb下的工具包

新特性:

  • 全面的基于Java的应用程序配置
  • 新的缓存抽象层
  • 环境支持,包括bean定义的配置文件和属性源管理
  • 支持Hibernate 4.0
  • 支持Java 7 fork/join和JDBC 4.1
  • 基于WebApplicationInitializer机制的Servlet 3.0提供了丰富的XML引导替代方案
  • 改进了MVC处理,包括支持flash属性、新的@RequestPart注解、新的HandlerMapping/HandlerAdapter变量等
  • 改善了O/R映射支持,允许无persistence.xml的JPA包扫描

    另外,该版本还包括许多bug修复,详细信息参阅:Changelog
    建议所有Spring 3.0.x用户升级至该版本。该版本与Spring 3.0完全兼容,最低要求为Java 5和Servlet 2.4。

    下载地址:

    http://www.springsource.com/products/spring-community-download

    http://repo.springsource.org/release

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................6 第1章 Spring Framework介绍.......................................................................................................................7 1.1 依赖注入和控制反转 ............................................................................................................................7 1.2 模块............................................................................................................................................................7 1.2.1 核心容器...........................................................................................................................................8 1.2.2 数据访问/整合 ................................................................................................................................9 1.2.3 Web .....................................................................................................................................................9 1.2.4 AOP和基础组件...............................................................................................................................9 1.2.5 测试....................................................................................................................................................9 1.3 使用方案................................................................................................................................................ 10 1.3.1 依赖管理和命名规约 ................................................................................................................. 13 1.3.1.1 Spring依赖和基于Spring ................................................................................................... 14 1.3.1.2 Maven依赖管理 ................................................................................................................... 15 1.3.1.3 Ivy依赖管理........................................................................................................................... 16 1.3.2 日志................................................................................................................................................. 17 1.3.2.1 不使用Commons Logging.................................................................................................. 18 1.3.2.2 使用SLF4J.............................................................................................................................. 18 1.3.2.3 使用Log4J ............................................................................................................................. 20 第二部分 Spring 3的新特性............................................................................................................................. 22 第2章 Spring 3.0新特性和增强 ............................................................................................................ 22 2.1 Java 5 ........................................................................................................................................................ 22 2.2 改进的文档 ........................................................................................................................................... 22 2.3 新的文章和教程 .................................................................................................................................. 22 2.4 新的模块组织方式和系统构建方式............................................................................................... 23 2.5 新特性概述 ........................................................................................................................................... 23 2.5.1 为Java 5更新的核心API........................................................................................................... 24 2.5.2 Spring表达式语言 ........................................................................................................................ 24 2.5.3 控制反转(IoC)容器 ................................................................................................................ 25 2.5.3.1 基于Java的bean元数据.................................................................................................. 25 2.5.3.2 使用组件定义bean的元数据.......................................................................................... 26 2.5.4 通用的类型转换系统和字段格式化系统 .............................................................................. 26 2.5.5 数据层 ............................................................................................................................................ 26 2.5.6 Web层............................................................................................................................................. 26 2.5.6.1 全面的REST支持 ................................................................................................................ 27 2.5.6.2 @MVC的增加........................................................................................................................ 27 2.5.7 声明式的模型验证 ...................................................................................................................... 27 2.5.8先期对Java EE 6的支持 ............................................................................................................. 27 2.5.9 嵌入式数据库的支持 ................................................................................................................. 27 第3章 Spring 3.1新特性和增强 ............................................................................................................ 28 3.1 新特性概述 ........................................................................................................................................... 28 第三部分 核心技术............................................................................................................................................. 29 第4章 IoC容器............................................................................................................................................... 30 4.1 Spring IoC容器和bean的介绍 ......................................................................................................... 30 4.2 容器概述................................................................................................................................................ 30 4.2.1 配置元数据 ................................................................................................................................... 31 4.2.2 实例化容器 ................................................................................................................................... 32 4.2.2.1 处理基于XML的配置元数据........................................................................................... 33 4.2.3 使用容器........................................................................................................................................ 34 4.3 Bean概述................................................................................................................................................ 35 4.3.1 命名bean ...................................................................................................................................... 35 4.3.1.1 在bean定义外面起别名................................................................................................... 36 4.3.2 实例化bean .................................................................................................................................. 37 4.3.2.1 使用构造方法实例化 ......................................................................................................... 37 4.3.2.2 使用静态工厂方法来实例化 ............................................................................................ 37 4.3.2.3 使用实例工厂方法来实例化 ............................................................................................ 38 4.4 依赖......................................................................................................................................................... 39 4.4.1 依赖注入........................................................................................................................................ 39 4.4.1.1 基于构造方法的依赖注入 ................................................................................................ 40 4.4.1.2 基于setter方法的依赖注入............................................................................................. 42 4.4.1.3 解决依赖过程....................................................................................................................... 43 4.4.1.4 依赖注入示例....................................................................................................................... 44 4.4.2 深入依赖和配置 .......................................................................................................................... 46 4.4.2.1 直接值(原生类型,String,等) ............................................................................ 46 4.4.2.2 引用其它bean(协作者) ............................................................................................... 48 4.4.2.3 内部bean .............................................................................................................................. 49 4.4.2.4 集合......................................................................................................................................... 49 4.4.2.5 null和空字符串..................................................................................................................... 52 4.4.2.6 使用p-命名空间的XML快捷方式 ................................................................................. 53 4.4.2.7 使用c-命名空间的XML快捷方式 .................................................................................. 54 4.4.2.8 复合属性名称....................................................................................................................... 55 4.4.3 使用depends-on..................................................................................................................... 55 4.4.4 延迟初始化bean ......................................................................................................................... 56 4.4.5 自动装配协作者 .......................................................................................................................... 56 4.4.5.1 自动装配的限制和缺点 ..................................................................................................... 57 4.4.5.2 从自动装配中排除bean.................................................................................................... 58 4.4.6 方法注入........................................................................................................................................ 58 4.4.6.1 查找方法注入....................................................................................................................... 59 4.4.6.2 任意方法的替代 .................................................................................................................. 60 4.5 Bean的范围 ........................................................................................................................................... 61 4.5.1 单例范围........................................................................................................................................ 62 4.5.2 原型范围........................................................................................................................................ 63 4.5.3 单例bean和原型bean依赖 .................................................................................................... 64 4.5.4 请求,会话和全局会话范围 .................................................................................................... 64 4.5.4.1 初始化Web配置................................................................................................................. 64 4.5.4.2 请求范围................................................................................................................................ 65 4.5.4.3 会话范围................................................................................................................................ 65 4.5.4.4 全局会话范围....................................................................................................................... 66 4.5.4.5 各种范围的bean作为依赖 .............................................................................................. 66 4.5.5 自定义范围 ................................................................................................................................... 68 4.5.5.1 创建自定义范围 .................................................................................................................. 68 4.5.5.2 使用自定义范围 .................................................................................................................. 69 4.6 自定义bean的性质............................................................................................................................ 70 4.6.1 生命周期回调............................................................................................................................... 70 4.6.1.1 初始化回调 ........................................................................................................................... 71 4.6.1.2 销毁回调................................................................................................................................ 71 4.6.1.3 默认的初始化和销毁方法 ................................................................................................ 72 4.6.1.4 组合生命周期机制.............................................................................................................. 73 4.6.1.5 启动和关闭回调 .................................................................................................................. 74 4.6.1.6 在非Web应用中,优雅地关闭Spring IoC容器......................................................... 75 4.6.2 ApplicationContextAware和BeanNameAware .................................................... 76 4.6.3 其它Aware接口 ........................................................................................................................ 76 4.7 Bean定义的继承 .................................................................................................................................. 78 4.8 容器扩展点 ........................................................................................................................................... 79 4.8.1 使用BeanPostProcessor来自定义bean ..................................................................... 79 4.8.1.1 示例:BeanPostProcessor风格的Hello World.................................................. 80 4.8.1.2 示例:RequiredAnnotationBeanPostProcessor....................................... 82 4.8.2 使用BeanFactoryPostProcessor自定义配置元数据........................................... 82 4.8.2.1 示例:PropertyPlaceholderConfigurer....................................................... 83 4.8.2.2 示例:PropertyOverrideConfigurer............................................................... 84 4.8.3 使用FactoryBean来自定义实例化逻辑 ......................................................................... 85 4.9 基于注解的容器配置 ......................................................................................................................... 86 4.9.1 @Required................................................................................................................................... 87 4.9.2 @Autowired和@Inject........................................................................................................ 87 4.9.3 使用限定符来微调基于注解的自动装配 .............................................................................. 90 4.9.4 CustomAutowireConfigurer........................................................................................... 95 4.9.5 @Resource................................................................................................................................... 96 4.9.6 @PostConstruct和@PreDestroy .................................................................................. 97 4.10 类路径扫描和管理的组件 .............................................................................................................. 97 4.10.1 @Component和更多典型注解 ............................................................................................. 98 4.10.2 自动检测类和bean的注册 .................................................................................................... 98 4.10.3 使用过滤器来自定义扫描 ...................................................................................................... 99 4.10.4 使用组件定义bean的元数据 ............................................................................................. 100 4.10.5 命名自动检测组件.................................................................................................................. 101 4.10.6 为自动检测组件提供范围 .................................................................................................... 102 4.10.7使用注解提供限定符元数据 ................................................................................................. 103 4.11 使用JSR 330标准注解................................................................................................................... 104 4.11.1 使用@Inject和@Named进行依赖注入 ........................................................................ 104 4.11.2 @Named:@Component注解的标准等同 ....................................................................... 105 4.11.3 标准方法的限制 ...................................................................................................................... 105 4.12 基于Java的容器配置 .................................................................................................................... 106 4.12.1 基本概念:@Configuration和@Bean................................................................................ 106 4.12.2 使用AnnotationConfigApplicationContext实例化Spring容器............ 107 4.12.2.1 简单构造 ........................................................................................................................... 107 4.12.2.2 使用register(Class<?>...)来编程构建容器 ............................................ 107 4.12.2.3 使用scan(String..)开启组件扫描 ................................................................... 108 4.12.2.4 支持Web应用的AnnotationConfigWebApplicationContext ........ 108 4.12.3 构成基于Java的配置 ............................................................................................................ 110 4.12.3.1 使用@Import注解........................................................................................................ 110 4.12.3.2 结合Java和XML配置 ................................................................................................... 113

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值