Spring Boot深度实践之自动装配( 二 )


Spring Boot深度实践之自动装配
本文插图
可以看到 , @Service确实被@Component标注了 , 所以被@Service注解的组件也将会被Spring容器扫描到 。

  • 常用模式注解整理
将常用模式注解整理成下方表格:
Spring Boot深度实践之自动装配
本文插图
  • 装配方式
装配方式分为两种:
  • <context:component-scan>方式
  • @ComponentScan方式
先来看看<context:component-scan>方式:
Spring Boot深度实践之自动装配
本文插图
如上图所示 , 通过xml配置的方式 , <context:annotation-config />激活注解驱动特性 , <context:component-scan base-package=”com.example.demo” />指定扫描组件的根路径 , 将被@Component注解的类加载进Spring容器 。
再来看看@ComponentScan方式:
Spring Boot深度实践之自动装配
本文插图
只需要在主配置类上添加@ComponentScan(value=''需要扫描的包名前缀'')注解即可 。
模式注解在基于Spring框架开发Web服务时是极常用的注解 , 相信做Java Web开发的同学一定深有体会 。
当我们了解完Spring Framework的模式注解装配 , 接着来到第二部分@Enable模块装配 。
Spring @Enable模块装配
  • Enable 模块定义
定义:具备相同领域的功能组件集合 , 组合所形成的一个独立的单元 。
Spring Framework 3.1 开始支持“@Enable模块驱动” 。 所谓“模块”是指具备相同领域的功能组件集合 , 组合所形成一个独立的单元 。 在Spring Framework中 , 存在Web MVC模块 , AspectJ代理模块 , Caching(缓存)模块 , JMX(java管理扩展)模块 , Async(异步处理)模块等 。
  • 常见@Enable注解模块整理
将常见@Enable注解模块整理成下方表格:
Spring Boot深度实践之自动装配
本文插图
  • 装配方式
装配方式分为两种:
  • 注解驱动方式
  • 接口编程方式
先来看看注解驱动方式 , 我们以@EnableWebMvc注解为例 , 贴上其源码 。
Spring Boot深度实践之自动装配
本文插图
可以看到 , @EnableWebMvc被@Import标注了 , @Import的作用是将DelegatingWebMvcConfiguration装载进Spring容器 , 我们再进入到DelegatingWebMvcConfiguration中 , 发现其已被@Configuration标注 , 如下图所示:
Spring Boot深度实践之自动装配
本文插图
看到@Configuration注解 , 就能知道 , DelegatingWebMvcConfiguration将会被Spring容器扫描到并加载进容器 , 这种方式 , 就是Enable模块的注解驱动方式 。
再来说说接口编程方式 , 这里我们以@EnableCaching为例 , @EnableCaching的作用是激活Spring的缓存 。 贴上源码:
Spring Boot深度实践之自动装配
本文插图
从源码可以看到 , @Import引入的是CachingConfigurationSelector类 , 再进入到CachingConfigurationSelector类 , 下图为其源码:
Spring Boot深度实践之自动装配
本文插图


推荐阅读