PartII :spring 4.0的更新

##3.spring 4.0的新功能和改善 spring框架在2014年收发;到目前为止有这几个主要版本:spring2.0提供了xml命名空间和AspectJ的支持;spring2.5实现了注解驱动配置;spring3.0在代码里引入了强大的java5.0+(1.5,1.6,1.7)的基础;还提供了基于java的@Configuration模式; 4.0版本是spring最新的主要发布版,首次完全支持java8的特性;你还是可以用旧版本来支持spring的,但要在jdk1.6以上;我们还提供了可以删除许多过时类和方法的主要发布版本选项; ###3.1 让获取起步经验更容易 新的 spring 网站提供了一系列的"getting Started"手册帮助你学习spring;你可以从第一章启动spring部分获得更多资料.新网站还对这些在spring框架下的新项目提供了复杂的文档介绍; 如果你是maven用户,那么你可能对bill of materials部分感兴趣,每个发布版都会有;

3.2 去掉过时的包和方法(Removed deprecated Packages and methods)

许多过时的包,类,方法已经从4.0版本里删掉了. 如果你要更新你的spring版本,你要保证你能修复所有由我们定义的过时APIS引起的过时调用问题; 你可以从 API Differences Report得到详细的变更列表 请注意,所有的第三方依赖都必须是2010/2011年以上版本(spring4.0只支持2010版本或更新版本); 尤其,hibernate3.6+,Ehcache 2.1+,Quartz 1.8+,Groovy 1.8+,Joda-Time 2.0+.这里有个例外,spring 4.0要求bibernate验证器要为4.3版本,现在对Jackson的支持要求为2.0+版本;(spring3.2支持1.8/1.9版本,然现在已过时) ###3.3 java8(也有 6和7) spring 4.0 提供了对java8功能的一些支持.你可以再spring回调接口中使用lambda表达式和方法表达式.这里对java.time包((JSR-310)[http://jcp.org/en/jsr/detail?id=310]) 有一流的支持,还把几种已存在的注解改装为@Repeatable注解一样.你还可以使用java8的参数名字发现机制(基于参数编译器标志)作为替代项使你在编译期间获取调试信息; 保持对java6,7的兼容,但jdk6要求是 JDK 6 update 18;然还是建议要8; ###3.4 java EE 6和7 java EE 6是spring框架的最低版,主要是JPA2.0和Servlet3.0规格和它部分关联.为了保持与Google App Engine和旧版本应用容器的兼容性,你可以在Servlet2.5的版本上运行spring4.0的项目.然Servlet 3.0+仍被强烈推荐,他是spring test模块和模仿测试包在开发环境中的先决条件; suggest:如果你使用WebSphere 7,那么你必须安装JPA2.0的功能包.在weblogic 10.3.4或者更高的版本上,JPA2.0已经安装了.所以这两中版本的服务容器都兼容spring4.0的部署环境. 再往前看,spring 4.0支持java EE7的的应用规则:特别是JMS2.0,JTA1.2,Bean Validation 1.1,JSR-236 Concurrency Utilities.通常,它支持各种规范的具体应用.然而,部署在Java EE 7 的服务器上也能运行良好; 只有SPring4.0++才支持hibernate 4.3+和JPA2.0+.这同样适用于Hiberante Validator 5.0 ,Bean Validation 1.1.(这两者没有被Spring 3.2正式支持) ##Groovy Bean Definition DSL(Groovy Bean的定义语句 DSL) 可以使用Goovy DSL来定义spring4.0的配置文件.她可以使用比xml更简洁的语法.它可以使你启动代码变得更容易.例如:


		    def reader=new GroovyBeanDefinitionReader(myApplicationContext)
			reader.beans{
				dataSource(BasicDataSource){
					driverClassName="org.hsqldb.jdbcDriver"
					url="jdbc:hsqldb:mem:grailsDB"
					username="sd"
					password=""
					settting=[mynew:"setting"]
				}
				sessionFactory(SessionFactory){
				dataSource=dataSource
				}	
				 myService(MyService){
				   nestedBean={AnotherBean bean->
						dataSource=dataSource
				   }
				 }
			}

3.6 核心容器改善

有以下改善:

  • 将泛型类型视为注入机制的限制条件.例如你使用Repository,那么你可以很容易注入一个具体实现 @Autowired Repository<Customer> customerRepository;
  • 如果你使用spring的元注解支持,你可以开发自动以注解,从资源注解中暴露特定属性;
  • @Order 加载顺序,值越小越先加载
  • @Lazy 可作用在Bean的注解上;
  • @Description 注解用于基于java配置
  • @Conditional 条件注解()简单示例:@Conditional(Conditioner.class);

    public class Conditoner implement condition{
		@Override
		public boolean matches(ConditionContext context,AnnotatedTypeMedtadata metadata){
		   return  ....
		   ;
		}
	}

简单使用, 和profile注解效果相似

  • CGLIB-based 的代理类不需要一个默认的构造器. objenesis 类库提供的支持,而它集成到spring中.你的代理类就不需构造器了
  • 提供时区管理的功能;通过LocaleContext类

###3.7 web优化 要使用Servlet3.0的包,2.5虽然也可以.但如果你要使用Spring Mvc Test 框架,就必须用Servlet3.0; 除了下文会提到的WebSocket支持外,还有以下改进 - 你可以在springmvc项目使用@RestController注解,它可以去掉你每个@RequestMapping方法的返回时的@ResponseBody注解;

  • 已添加AsyncRestTemplate 类,提供非阻塞的异步支持
  • 提供完善的时区支持 ###3.8 webSocket,SockJS,and STOMP Messaging spring-websocket模块对基于WebSocket的应用提供全面支持;WebSocket可以使客户端和服务器之间进行通信.它兼容JSR-356,Java webSocket API,还对目前不支持WebScoket协议的浏览器提供了其他基于SockJS的失败支持(换成长连接或短连接),如IE10以下版本不支持webSocket协议; 一个新的spring消息模块添加了对STOMP的支持,它使用注解编程模式,用于从WebSocket客户端接收和处理STOMP的消息.通过它,@Controller的类可以同时在一个方法上添加@RequestMapping和@MessageMapping方法,用来处理http请求和基于webSocket连接客户端的消息; 这个新的Spring-messageing 模块也包括了原来的spring Integer项目的关键抽象;例如Message,MessageChannel,MessageHandler,还有其他作为消息应用的基础服务的组件; 对于更多的细节,包括更详细的介绍,请参考Chapter 26, WebSocket Support 这章; ###3.9 测试优化 除了去掉过时的代码,spring4.0还提供了单元测试和基础测试的一些新方法
  • 原来的spring-test模块的大部分注解(例如 @ContextConfiguration,@WebAppConfiguration,@ContextHierarchy,@ActiveProfilles)可以作为元注解来生成自定义注解,并减少测试环境的重复配置;
  • 启动Bean定义的Profiles可以通过编程释放,可以一个自定义实现的ActiveProfilesResolver类,并把它通过@ActiveProfiles的resolver属性进行注册;
  • spring core中提供了一个新的SocketUtils类,它可以扫描TCP和UDP服务器在本地的空闲端口;该功能并不是针对测试的,但是在聚合测试使用socket时会很有用.例如,测试时启动了一个启动内存的SMTP服务器,FTP服务器,Servlet服务器等.
  • spring4.0,在org,springframework.mock.web包的模拟部分已经基于Servlet3.0的API了.还有,Servlet API的模拟模块一部分更新为少量加强和优化;

转载于:https://my.oschina.net/u/1590027/blog/714520

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值