SpringBootApplication注解

冯旭光 Lv4

SpringBootApplication 注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 省略...
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

// exclude 属性表示哪些类需要排除掉, 等同于 EnableAutoConfiguration 类里的 exclude 属性
@AliasFor(annotation = EnableAutoConfiguration.class)
Class<?>[] exclude() default {};

// excludeName 属性表示哪些类名称需要排除掉, 等同于 EnableAutoConfiguration 类里的 excludeName 属性
@AliasFor(annotation = EnableAutoConfiguration.class)
String[] excludeName() default {};

// scanBasePackages 属性表示要扫描哪些包下的类, 等同于 ComponentScan 类里的 basePackages 属性
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
String[] scanBasePackages() default {};

// scanBasePackageClasses 属性表示要扫描哪些包下的类,等同于 ComponentScan 类里的 basePackageClasses 属性
@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
Class<?>[] scanBasePackageClasses() default {};

@AliasFor(annotation = ComponentScan.class, attribute = "nameGenerator")
Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;

// 配置是否生效, 默认 true, 表示要加载
@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}

@SpringBootApplication 注解是 Spring Boot 中的核心注解,它用于标识一个主要的 Spring Boot 应用程序类。

该注解是一个复合注解,包含:@ComponentScan、@SpringBootConfigure、@EnableAuthConfigure 注解。

@ComponentScan 注解

扫描路径为当前解析这个类所在的包路径。

@EnableAutoConfigure 注解

1
2
3
4
5
6
7
8
9
10
// 省略 ...
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

Class<?>[] exclude() default {};

String[] excludeName() default {};
}

这个注解会负责进行自动配置类的导入,也就是将项目中的配置类自动导入到 Spring 容器中,从而得到解析。

@SpringBootConfigure 注解

1
2
3
4
5
6
7
8
// 省略 ...
@Configuration
@Indexed
public @interface SpringBootConfiguration {

@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}

相当于 @Configuration 注解,表示当前类是个配置类。

  • 标题: SpringBootApplication注解
  • 作者: 冯旭光
  • 创建于 : 2024-02-08 17:58:05
  • 更新于 : 2025-03-11 14:43:46
  • 链接: https://blog.fengxuguang.top/posts/b1e2d9f1/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论