当前位置: 首页 > news >正文

【Spring Boot 注解】@Configuration与@AutoConfiguration

文章目录

  • @Configuration与@AutoConfiguration
    • 一、@Configuration
    • 二、@AutoConfiguration

@Configuration与@AutoConfiguration

一、@Configuration

这是最常用的 Spring 注解之一,表示当前类是一个 配置类,可以定义 @Bean 方法,等效于传统的 XML 配置文件。

特点:

  • 明确地告诉 Spring 这个类是配置类。
  • 常用于显式配置,由开发者自己创建、引用。
  • @Bean 方法定义的组件会注册到 Spring 容器中。

示例:

@Configuration
public class MyConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

只要MyConfig @SpringBootApplication扫描范围内,那么该Bean就会被加载。

二、@AutoConfiguration

这是 Spring Boot 提供的注解,用于自动配置类。

特点:

  • 由 Spring Boot 自动加载,配合 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 使用。
  • 用于按需加载配置,支持条件注解(如 @ConditionalOnClass, @ConditionalOnProperty 等)。
  • 主要用于自动配置组件,如 Spring Boot 中的 starter 自动装配机制。

示例:

package org.kaishu.framework.swagger;@AutoConfiguration
// 判断是否引入了 OpenAPI 类,否则自动配置不启用
@ConditionalOnClass({OpenAPI.class})
//只有当 springdoc.api-docs.enabled=true 或未配置(默认值)时,这段配置才会启用
@ConditionalOnProperty(prefix = "springdoc.api-docs", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableConfigurationProperties(SwaggerProperties.class)
public class KaishuSwaggerAutoConfiguration {
...
}

注:
需要在 resource/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中声明此类,Spring Boot 才会自动扫描并导入,不需要添加包路径到@SpringBootApplication扫描范围中。
文件示例:

org.kaishu.framework.swagger.KaishuSwaggerAutoConfiguration
http://www.xdnf.cn/news/304435.html

相关文章:

  • vue2项目中使用pag格式动图
  • GMRES算法处理多个右端项的Block与PseudoBlock变体
  • 【已解决】Neo4j Desktop打不开,不断网解决
  • 一种基于条件生成对抗网络(cGAN)的CT重建算法
  • Hadoop架构再探讨
  • keil+vscode+腾讯ai助手
  • 【prometheus+Grafana篇】基于Prometheus+Grafana实现Linux操作系统的监控与可视化
  • 【程序员AI入门:基础】5.提示工程怎么释放LLM的潜力
  • WT2606B显示驱动TFT语音芯片IC:重塑电子锁交互体验的技术革新
  • 神经网络之训练的艺术:反向传播与常见问题解决之道
  • 数据库实验10 函数存储
  • Dify - Stable Diffusion
  • 《数据分析与可视化》(清华)ch-6 作业 三、绘图题
  • 解决Centos连不上网
  • 数字图像相关法在薄板变形测量中的实践
  • 《Python星球日记》第34天:Web 安全基础
  • Cadence学习笔记之---PCB工程创建、类与子类、颜色管理器介绍
  • 【Python】--实现多进程
  • 2.4线性方程组
  • 使用batch脚本调用另一个batch脚本遇到的问题
  • 【Linux网络编程十一】网络原理之数据链路层
  • 【HTML5】显示-隐藏法 实现网页轮播图效果
  • 【LDM】视觉自回归建模:通过Next-Scale预测生成可扩展图像(NeurIPS2024最佳论文阅读笔记与吃瓜)
  • 第七节:图像基本操作-图像属性获取 (尺寸、通道数、数据类型)
  • C++【STL】(1)string
  • 基于STM32、HAL库的W25X40CLSNIG NOR FLASH存储器驱动应用程序设计
  • 【Linux系统】线程安全
  • unix 详解
  • cuda多维线程的实例
  • 纷析云开源财务软件:重新定义企业财务自主权