文章目录
SpringBoot自动装配系列文章 |
---|
@EnableXXX注解+@Import轻松实现SpringBoot的模块装配 |
带你拿捏SpringBoot自动装配的核心技术?模块装配(@EnableXXX注解+@Import)+ 条件装配(@ConditionalXXX) |
深入探究Spring Boot自动配置原理及SPI机制:实现灵活的插件化开发 |
![]() |
前言
最早我们开始学习或接触过 SSH 或者 SSM 的框架整合,大家应该还记得那些配置文件有多烦吧,又多又不好记真的很让人头大。在处理配置文件的同时,大家是否有想过:如果能有一种方式,可以使用很少的配置,甚至不配置就可以完成一个功能的装载,那岂不是省了很多事?
这个疑问在 SpringBoot 中得以解决,也就是我们常说的自动装配,而这个自动装配的核心技术就是模块装配 + 条件装配。
今天我们这里主要讲解模块装配,条件装配我们后续再讲解!
原生手动装配
通常我们使用 @Configuration
+ @Bean
注解组合,或者 @Component
+ @ComponentScan
注解组合,可以实现编程式 / 声明式的手动装配。这两种方式相信大家都肯定会了。
不过,我们思考一个问题:如果使用这两种方式,如果要注册的 Bean 很多,要么一个一个的 @Bean
编程式写,要么就得选好包进行组件扫描,而且这种情况还得每个类都标注好 @Component
或者它的衍生注解才行。面对数量很多的 Bean ,这种装配方式很明显会比较麻烦,需要有一个新的解决方案。
那就是我们接下来要讲的模块装配!
模块装配概述
SpringFramework 3.0 的发布,全面支持了注解驱动开发,随之而来的就是快速方便的模块装配。
模块通常就是一个功能单元,而模块装配就可以理解为把一个模块需要的核心功能组件都装配好,当然如果能有尽可能简便的方式那最好。
SpringFramework 中的模块装配,是在 3.1 之后引入大量 @EnableXXX
注解,来快速整合激活相对应的模块。
在 3.1.5 节中,它有介绍 @EnableXXX
注解的使用,并且它还举了不少例子,这里面不乏有咱可能熟悉的:
EnableTransactionManagement
:开启注解事务驱动EnableWebMvc
:激活 SpringWebMvcEnableAspectJAutoProxy
:开启注解 AOP 编程EnableScheduling
:开启调度功能(定时任务)
另外比如:我们常用的@SpringBootApplication注解中用于开启自动注入的@EnableAutoConfiguration
,开启异步方法的@EnableAsync
,