SpringBoot Hello World主程序分析(学习笔记5)

时间:2022-12-26 18:20:23

SpringBoot Hello World主程序分析(学习笔记5)

1、@SpringBootApplication 来标注一个主程序类,说明这是一个 Spring Boot 应用。@SpringBootApplication 标注哪个类上, Spring Boot 就运行这个类的 main 方法,来启动SpringBoot应用。一个@SpringbootApplication相当于@Configuration,@EnableAutoConfiguration和 @ComponentScan等并具有他们的默认属性值, 它是一个组合注解:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)

SpringBoot Hello World主程序分析(学习笔记5)

@SpringBootConfiguration Spring Boot 的配置类;这个注解标注哪个类上,就表示这个类是 Spring Boot 的配置类,点击 @SpringBootConfiguration 注解:

SpringBoot Hello World主程序分析(学习笔记5)

在这里我们可以看到 @Configuration 注解,@Configuration 注解是Spring定义的注解。相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

2、@EnableAutoConfiguration 开启自动配置功能;它是一个组合注解:

@AutoConfigurationPackage:自动配置包;将主配置类(@SpringBootApplication标识的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器。

@Import({AutoConfigurationImportSelector.class}) @Import是Spring底层注解,给容器中导入组件。


@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

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

    String[] excludeName() default {};
}


SpringBoot Hello World主程序分析(学习笔记5)

J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-*.RELEASE.jar.

SpringBoot Hello World主程序分析(学习笔记5)

SpringBoot Hello World主程序分析(学习笔记5)

感谢--尚硅谷