Spring4.0给我们带来什么?
JDK8
对JDK8的支持,这个目前来说还是探索性质,毕竟Java 8自己都还没有GA,而且应该没有公司会在目前的情况下使用JDK8做产品开发。因此,暂时可忽略。
Groovy Bean Definition DSL
即可以通过Groovy class来配置Bean,以及Bean之间的相互依赖,即Spring2时代推出的xml配置,Spring3推出的Annotation配置,Spring4为配置方式又增添了一位新成员Groovy DSL。举个栗子:
@Autowiredprivate MovieCatalog[] movieCatalogs;….@Autowiredprivate Set<MovieCatalog> movieCatalogs;….@Autowiredprivate Map<String, MovieCatalog> movieCatalogs;如果,你对Bean在Array或List中的位置有特殊需求,Spring4.0还提供了@Order annotation和Ordered接口来定义Bean注入到Array/List中的顺序.
扩展@Lazy annotation,除了延迟加载Bean,依赖注入也可以延迟了。提供了@Description annotation为Bean添加描述。增加了@Condition annotation, 使用该Annotation之后,在做依赖注入的时候,会检测是否满足某个条件,这样可以更灵活的决定注入的类,具体用法参见:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Conditional.html,或者说这篇文章:http://jinnianshilongnian.iteye.com/blog/1989379。基于CGLIB的代理类不在强制要求空参构造函数了,提供了一种“一旦注册,不许修改”的注入策略。
Web开发改进
增加了@RestController annotation, 就是把@Controller和@ReponseBody打包了,省得大家再去每个方法上加一个@ResponseBody了。新加了AsyncRestTemplate类,可以用来构建异步调用的Restful Client, 具体用法看这儿:http://jinnianshilongnian.iteye.com/blog/1989381,或者这儿:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#rest-async-resttemplateSpring4.0基于Servlet3.0+版本开发,尤其是Spring MVC的测试框架中的Mock都是基于Servlet3.0包中的一些类的,因此使用时必须把兼容Servlet 3.0的包添加到Classpath中。为Spring MVC应用增加了Timezone的支持,可以在RequestContext获取,设置TimeZone信息,Spring还提供Datetime的转换功能:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-timezone提供了 WebSocket, SockJS, and STOMP Messaging的支持,在一个Controller中,除了可以处理 @RequestMapping对应的Http请求,还可以处理对应@MessageMapping的WebSocket Client发来的Message请求,哪些不支持WebSocket的浏览器,Spring4.0提供了基于SockJS协议的Message处理,即你可以在浏览器基于SockJS协议模拟一个Web Socket的请求,Spring4.0也可以处理。具体的说明:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#websocket支持STOMP Message协议
测试框架改进
几乎所有spring-test模块下的annotation(比方说:@ContextConfiguration, @WebAppConfiguration, @ContextHierarchy, @ActiveProfiles)都可以做元annoation, 这样开发者就可以更方便得定制自己的annotation,以增强代码表现力和减少多个Test之间的重复代码。增加了一种更灵活的ActiveProfiles的决定方式,定制一个ActiveProfilesResolver并把它设置到@ActiveProfiles的resolver属性上。添加了SocketUtils类帮忙扫描本地机器上的可用Socket端口,当需要在本地起一个mock server时这个功能非常实用。org.springframework.mock.web包下的Mock类都与Servlet 3.0兼容了 1 楼 manong_java 21 小时前 貌似用到的特性都非常的少, 不过websoket是个关注的方向 可以介绍下websocket方面的