当前位置: 首页 > 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.dtcms.com/a/173559.html

相关文章:

  • 多线程1-进程和线程
  • mapbox基础,加载Fog云雾效果
  • Linux下的c/c++开发之操作mysql数据库
  • GCC编译器安装详细说明(举例arm-2013q3)
  • 神经网络之训练的艺术:反向传播与常见问题解决之道
  • 移动应用开发:自定义 View 处理大量数据的性能与交互优化方案
  • 高等数学第五章---定积分(§5.3定积分的计算方法)
  • 深度解析:2D 写实交互数字人 —— 开启智能交互新时代
  • React 中集成 Ant Design 组件库:提升开发效率与用户体验
  • 深度剖析:可视化如何重塑驾驶舱信息交互模式
  • ES6/ES11知识点 续四
  • Spring Web MVC————入门(1)
  • 二、Hadoop狭义和广义的理解
  • 宏电全新升级单北斗5G电力DTU,为每一公里电力线路注入可靠连接
  • springboot微服务连接nacos超时
  • SMT贴片钢网精密设计与制造要点解析
  • openEuler22.03 环境编译安装 PostgreSQL 15.6 + PostGIS 3.4.1
  • 【计算机网络】TCP/IP四层模型是什么?与OSI七层模型哪些区别?
  • Nginx安全防护与HTTPS部署
  • AI大模型驱动的智能座舱研发体系重构
  • 金升阳科技:配套AC/DC砖类电源的高性能滤波器
  • 如何开始使用 Blender:Blender 3D 初学者指南和简介 怎么下载格式模型
  • 制造企业PLM系统成本基准:2025年预算分配与资源成本率的5种优化模型
  • Spark,配置hadoop集群2
  • 从贴牌到品牌:出海官网如何让中国制造“贵”起来?
  • Java基础学完,继续深耕(0506)SQL--多表关系
  • 【Hive入门】Hive行级安全:基于Apache Ranger的细粒度访问控制深度解析
  • ShardingJdbc-水平分库
  • 【ArcGISPro】属性规则--属性联动
  • 【JsonCpp、Muduo、C++11】JsonCpp库、Muduo库、C++11异步操作