资料总结 资料总结
首页
go
java
云原生
  • mysql
  • redis
  • MongoDB
  • 设计模式详解
  • 数据结构与算法
  • 前端
  • 项目
  • 理论基础
  • 运营
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

linghui Wu

一只努力学飞的鱼
首页
go
java
云原生
  • mysql
  • redis
  • MongoDB
  • 设计模式详解
  • 数据结构与算法
  • 前端
  • 项目
  • 理论基础
  • 运营
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • java-se

  • jvm

  • mybatis

  • Netty

  • 爬虫 webmagic

  • spring

    • spring官网项目介绍
    • spring源码分析
    • spring-mvc
    • spring-boot配置笔记
    • SpringBoot项目部署之外挂配置文件Deploy方式
    • SpringBoot源码分析
    • SpringBoot源码分析之条件注解
    • spring-cloud

    • 中间件

    • flowable

    • idea工具

    • maven

    • ms

    • java部署

    • 原生安卓

    • java
    • spring
    wulinghui
    2021-12-09
    目录

    SpringBoot源码分析之条件注解

    # 参考资料

    SpringBoot源码系列 (opens new window)

    # 条件注解(Conditional Annotation)

    • SpringBoot源码分析之条件注解的底层实现 (opens new window)

    • springboot源码解析(六)@ConditionalOnClass (opens new window)

      问: 1. Springboot的ConditionalOnClass注解,原因是我们的jar包里面可能没有对应的class,而使用ConditionalOnClass标注的Configuration类又import了这个类,那么如果想加载Configuration类,就会报ClassNotFoundException,那么又如何取到这个类上的注解呢。 2. 同时他又如何实现条件注解呢??

      答: 可以看OnClassCondition源码知道,他实现了2个重要接口: AutoConfigurationImportFilter 和Condition。

      通过ASM技术可以获得AutoConfigurationMetadata,他就知道依赖的配置类的一些信息。如果没有的话,就会跳过这个配置类,不导入成配置类,往applicationContext里面放了,也就不会进行后面的扫描包的工作了。 如果上面条件满足: 在判断成为beanDefion的时候还会调用Condition判断,是否最终的实例化bean。 他们这2步底层最终都调用了 classLoader.loadClass 用于确保。

    编辑 (opens new window)
    上次更新: 2023/01/24, 15:21:15
    SpringBoot源码分析
    Nacos使用

    ← SpringBoot源码分析 Nacos使用→

    最近更新
    01
    架构升级踩坑之路
    02-27
    02
    总结
    02-27
    03
    语法学习
    02-27
    更多文章>
    | Copyright © 2021-2025 Wu lingui |
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式