当前位置:网站首页 > R语言数据分析 > 正文

@enableswagger2注解(@enableswagger2doc)



在springboot中我们构建应用不用在像spring中那么繁琐,必须声明bean,然后才能使用,在springboot只要引入了相关的jar包,则对应的功能会自动加载扩展。要想理解springboot的自动装配原理,我们首先要知道在spring中中比较重要的几个注解:

  • @Import
  • @Configuration

比如大家常见的

则是由这几个注解组成。

这里我们必须先说下spring在后面提供的基于注解的启动方式,我们可以直接基于注解,实现 :

可以看到,这里我们就实现了自动装在的功能了,还可以通过接口:

spring实现基于注解的自动装载,实现就在

其中,在构造初始化的时候,有如下逻辑:

AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);

对应的代码逻辑如下:

可以看到,这步主要是注册了下面几个bean:

  • ConfigurationClassPostProcessor
  • AutowiredAnnotationBeanPostProcessor
  • CommonAnnotationBeanPostProcessor
  • EventListenerMethodProcessor
  • DefaultEventListenerFactory
    其中 就是用来处理 相关逻辑,其集成结构如下:

    其实现了,spring容器在bean的定义注册后会调用,在实现如下:







可以看到,这里会对当前所有注册的BeanDefinition进行判断,如果beanDefinition满足条件

  1. 有Configuration注解,则是FullConfigurationCandidate
  2. 有Component、ComponentScan、Import、ImportResource注解,则是LiteConfigurationCandidate

同时根据上述属性,设置Bedefinition对应属性:

当获取到满足条件BeanDefinition后,通过来进行实际的解析:

通过上述步骤,将相关注解需要处理的类和方法提取出来,然后通过注册到IOC容器中:

这样,便将注解相关的类都注册到了IOC容器中,那么spring是怎么获取需要扫描哪些bean呢 ?还记得开篇说的的吗,奥秘就在这个类构造时:

就是通过读取需要扫描的类,通过扫描指定的包名,这里就是Spring中实现基于注解方式的@Configuration方式

在springboot中一般springboot应用可以如下:

我们可以看下:

可以看到这里就是springboot自动装配的核心。

我们看看逻辑:

可以看到,主要逻辑是读取中key为的配置列表,然后按照条件对列表进行一定过滤,返回一个集合,spring会加载这个集合。

可以看到,默认情况下,只要我们开启了注解(直接或间接使用),springboot默认会为我们加载这么多的配置类,那么是不是这么多类都加载到IOC容器呢 ?这里我们就需要说下springboot中提供的、、、等条件注解。还记得我们在开头说的在的时候,会调用

可以看到,这里会获取注解上的属性,这里value属性是一个实现了接口的列表,然后实例化这些实现了接口的。可以看到,这里如果bean满足如下条件,则不会注册:

可有看到和的实现都是通过实现。

springboot Configuration用法_ide

可以看到,这里和实现本质上是一样的,就是获取注解上对应的bean是否存在,只不过两者在判断结果的时候,判断逻辑相反,而已。

EnableAutoConfigurationMETA-INF/spring.factories

到此这篇@enableswagger2注解(@enableswagger2doc)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • aurocean官网(auratic官网)2025-12-15 18:36:08
  • 群晖root密码忘记(群晖 密码忘记)2025-12-15 18:36:08
  • ultraiso制作dos启动盘(u盘制作纯dos启动盘)2025-12-15 18:36:08
  • tpami和cvpr哪个更厉害(tpami cvpr)2025-12-15 18:36:08
  • ueditor编辑器上传图片(ueditor多图上传)2025-12-15 18:36:08
  • argparse什么意思(args是什么意思中文翻译)2025-12-15 18:36:08
  • 双系统卸载后开机grub exti(双系统卸载后开机grub)2025-12-15 18:36:08
  • ubuntu源文件没有setup.py(ubuntu没有prime profiles)2025-12-15 18:36:08
  • 数组方法some和every的区别(数组的equals方法)2025-12-15 18:36:08
  • docker网络模型(docker 网络模型)2025-12-15 18:36:08
  • 全屏图片