【Spring Boot 注解】@SpringBootApplication

打印 上一主题 下一主题

主题 1841|帖子 1841|积分 5523

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
@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 来指定必要扫描的包路径。
示例如下:
  1. @SpringBootApplication(scanBasePackages = {"com.demo.module.system", "com.demo.module.infra"})
  2. public class MyApplication {
  3.     public static void main(String[] args) {
  4.         SpringApplication.run(MyApplication.class, args);
  5.     }
  6. }
复制代码
使用场景


  • 你的启动类 MyApplication 不在 com.demo 包下,比如它在 com.demo.core,而系统模块和根本设施模块分别在 com.demo.module.system 和 com.demo.module.infra 中。这种情况下,默认的扫描不会覆盖 module.system 和 module.infra,你就必要手动指定 scanBasePackages。
  • 你只希望扫描部分包,而不是整个项目标包。这样能淘汰启动时的扫描开销,进步性能。
补充
使用 ${} 来注入配置属性值,如下:
  1. @SpringBootApplication(scanBasePackages = {"${demo.info.base-package}.server", "${demo.info.base-package}.module"})
  2. public class MyApplication {
  3.     public static void main(String[] args) {
  4.         SpringApplication.run(MyApplication.class, args);
  5.     }
  6. }
复制代码
.yaml文件如下:
  1. demo:
  2.   info:
  3.     base-package: com.demo
复制代码
注:自界说starter使用@AutoConfiguration注解,无需将其路径放入扫描路径中。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表