前言
Spring Boot为我们提供了非常优雅的开箱即用特性,然后Spring Cloud基于这个特性将J2EE生态中的众多组件进行了包装,让我们在使用的时候不用关心太多组件整合引入上的问题。在这之前,大到我们在tomcat容器中引入Spring、SpringMVC、Redis、MySQL等各种数据库或者中间件,小到引入Json或者各种工具类等,都要进行比较繁琐的xml配置,而且动不动就造成各种各样的依赖缺失或者冲突等。然而这一切到Spring Boot中好像有了很大的不同,似乎我只要加几个简单的注解,配置一些必要的property,就可以启动一个完整的web应用,其过程和体验感觉十分的“丝滑”,组合框架变得就像搭积木那样简单。至于这些都是怎么做到的呢?接下来就一一道来。
4.1 @EnableAutoConfiguration注解
Spring Boot中提供@EnableAutoConfiguration注解支持,整个开箱即用的自动配置核心就依托于此了。该注解被“@Import(AutoConfigurationImportSelector.class)”标注,在第三章中有介绍到这个扩展机制。这个Selector 的selectImports实现方法中有一个关键的过程:
/**
* Return the auto-configuration class names that should be considered. By default
* this method will load candidates using {@link SpringFactoriesLoader} with
* {&#