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} )} )
@SpringBootConfiguration Spring Boot 的配置类;这个注解标注哪个类上,就表示这个类是 Spring Boot 的配置类,点击 @SpringBootConfiguration 注解:
在这里我们可以看到 @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 {}; }
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-*.RELEASE.jar.
感谢--尚硅谷 |