Spring Boot并不是一个新的技术框架,其主要作用就是简化Spring应用的开发,开发者只需要通过少量的代码就可以创建一个产品级的Spring应用,而达到这一目的最核心的思想就是“约定优于配置(Convention over Configuration)”。
在Spring Boot中,约定优于配置的思想主要体现在以下方面(包括但不限于):
• Maven目录结构的约定。
• Spring Boot默认的配置文件及配置文件中配置属性的约定。
• 对于Spring MVC的依赖,自动依赖内置的Tomcat容器。
• 对于Starter组件自动完成装配。
Spring Boot的核心
Spring Boot是基于Spring Framework体系来构建的,所以它并没有什么新的东西,但是要想学好Spring Boot,必须知道它的核心:
• Starter组件,提供开箱即用的组件。
• 自动装配,自动根据上下文完成Bean的装配。
• Actuator,Spring Boot应用的监控。
• Spring Boot CLI,基于命令行工具快速构建Spring Boot应用。
其中,最核心的部分应该是自动装配,Starter组件的核心部分也是基于自动装配来实现的。
3.3 Spring Boot自动装配的原理
在Spring Boot中,不得不说的一个点是自动装配,它是Starter的基础,也是Spring Boot的核心,那么什么叫自动装配呢?或者说什么叫装配呢?
简单来说,就是自动将Bean装配到IoC容器中,接下来,我们通过一个Spring Boot整合Redis的例子来了解一下自动装配。
• 添加Starter依赖:
• 在application.properties中配置Redis的数据源:
• 在HelloController中使用RedisTemplate实现Redis的操作:
在这个案例中,我们并没有通过XML形式或者注解形式把RedisTemplate注入IoC容器中,但是在HelloController中却可以直接使用@Autowired来注入redisTemplate实例,这就说明,IoC容器中已经存在RedisTemplate。这就是Spring Boot的自动装配机制。
在往下探究其原理前,可以大胆猜测一下,如何只添加一个Starter依赖,就能完成该依赖组件相关Bean的自动注入?不难猜出,这个机制的实现一定基于某种约定或者规范,只要Starter组件符合Spring Boot中自动装配约定的规范,就能实现自动装配。
3.3.1 自动装配的实现
自动装配在Spring Boot中是通过@EnableAutoConfiguration注解来开启的,这个注解的声明在启动类注解@SpringBootApplication内。
进入@SpringBootApplication注解,可以看到@EnableAutoConfiguration注解的声明。