1.支持將字符串型的日期,直接轉換成爲LocalDate類型
@RestController public class ExampleController { @RequestMapping("/date/{localDate}") public String get(@DateTimeFormat(iso = ISO.DATE) LocalDate localDate) { return localDate.toString(); }}
2.Spring 4支持對註解@Scheduled和@PropertySource的重複
3.Spring4 支持Java Optional,可以強制要求程序員對可能出現空指針的參數或返回值進行檢查
4.Java 8支持在編譯後的代碼中保留方法的參數名。這意味着Spring 4可以從方法中提取參數名,從而使SpringMVC代碼更爲簡潔
例如:
@RequestMapping("/accounts/{id}")public Account getAccount(@PathVariable("id") String id)
可以改寫爲:
@RequestMapping("/accounts/{id}")public Account getAccount(@PathVariable String id)
但是對於抽象方法,則需要在編譯的時候加入-parameters的選項,JAVA8纔會保留參數名,否則仍然需要在註解中註明參數名
5.通過新的@RestController指定在控制器上,這樣就不需要在每個@RequestMapping方法上加 @ResponseBody了。而且添加了一個
AsyncRestTemplate
,支持REST客戶端的異步無阻塞支持。
6.支持泛型依賴注入http://jinnianshilongnian.iteye.com/blog/1989330
7. Map依賴注入:
- @Autowired
- private Map<String, BaseService> map;
這樣會注入:key是bean名字;value就是所有實現了BaseService的Bean
8.List/數組注入:
- @Autowired
- private List<BaseService> list;
這樣會注入所有實現了BaseService的Bean;但是順序是不確定的,如果我們想要按照某個順序獲取;在Spring4中可以使用@Order或實現Ordered接口來實現
9.@Lazy可以延遲依賴注入
10.支持@Conditional註解http://jinnianshilongnian.iteye.com/blog/1989379 用於通過註解來決定Bean的創建方式等
11.基於CGLIB的類代理不再要求類必須有空參構造器了:
參考資料:
http://www.infoq.com/cn/articles/spring-4-java-8