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

【Spring Boot 注解】@SpringBootApplication

文章目录

  • @SpringBootApplication注解
    • 一、简介
    • 二、使用
      • 1.指定要扫描的包

@SpringBootApplication注解

一、简介

@SpringBootApplication 是 Spring Boot 提供的一个注解,通常用于启动类(主类)上,它是三个注解的组合:
1.@Configuration
表示该类是一个配置类,等价于 XML 配置文件。

2.@EnableAutoConfiguration
告诉 Spring Boot 启动自动配置功能,根据类路径下的依赖、配置等自动配置 Spring 应用。

3.@ComponentScan
启动组件扫描,默认扫描当前类所在包及其子包,将标注了如 @Component、@Service、@Repository、@Controller 等注解的类注入 Spring 容器。

二、使用

1.指定要扫描的包

默认情况下,@SpringBootApplication 会从它所在的包开始向下递归扫描所有子包中的组件(如 @Component@Service@Repository@Controller@Configuration 等)。

如果你的项目中有一些组件不在 @SpringBootApplication 所在包的子包里,就需要手动设置 scanBasePackages 来指定需要扫描的包路径。
示例如下:

@SpringBootApplication(scanBasePackages = {"com.demo.module.system", "com.demo.module.infra"})
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

使用场景

  • 你的启动类 MyApplication 不在 com.demo 包下,比如它在 com.demo.core,而系统模块和基础设施模块分别在 com.demo.module.system 和 com.demo.module.infra 中。这种情况下,默认的扫描不会覆盖 module.system 和 module.infra,你就需要手动指定 scanBasePackages
  • 你只希望扫描部分包,而不是整个项目的包。这样能减少启动时的扫描开销,提高性能。

补充
使用 ${} 来注入配置属性值,如下:

@SpringBootApplication(scanBasePackages = {"${demo.info.base-package}.server", "${demo.info.base-package}.module"})
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

.yaml文件如下:

demo:info:base-package: com.demo

注:自定义starter使用@AutoConfiguration注解,无需将其路径放入扫描路径中。

http://www.xdnf.cn/news/4222.html

相关文章:

  • 力扣-hot100 (矩阵置零)
  • C++命名空间
  • Windows11下通过Docker安装mysql8.0
  • FPGA----基于ZYNQ 7020实现petalinux文件持久化存储
  • Linux主机时间设置操作指南及时间异常影响
  • LeetCode 解题思路 45(Hot 100)
  • 科普文:丰田凯美瑞三代混动(THS II)技术解析
  • Golang领域Beego框架的中间件开发实战
  • 【Linux】用户与组管理
  • Fastjson 从多层级的JSON数据中获取特定字段的值
  • Transformer中的三种注意力机制
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM-结构化输出(三)
  • Copilot for PPT 可直接用模板创建品牌演示文稿
  • 【Python-Day 10】Python 循环控制流:while 循环详解与 for 循环对比
  • 文件上传/读取/包含漏洞技术说明
  • MySQL中有哪几种锁?
  • 【“星瑞” O6 评测】 — 车辆速度估计
  • 【区块链】Uniswap之滑点(Slippage)
  • Java 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • springBoot中自定义一个validation注解,实现指定枚举值校验
  • LINUX——例行性工作
  • 私有仓库 Harbor、GitLab
  • K8S使用--dry-run输出资源模版和兼容性测试
  • Django缓存框架API
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 如何添加或删除极狐GitLab 项目成员?
  • JPress安装(Docker)
  • 如何在使用 docker-compose 命令时指定 COMPOSE_PROJECT_NAME ?
  • 概统期末复习--速成
  • 区块链交易所开发:开启数字交易新时代