@SpringBootApplication注解
@SpringBootApplication是一个3合一注解:
//@SpringBootApplication
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
}
@SpringBootConfiguration
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.boot;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AliasFor;
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
@AliasFor(
annotation = Configuration.class
)
boolean proxyBeanMethods() default true;
}
@Configuration,代表当前是一个配置类
@ComponentScan
指定扫描哪些包,Spring注解。
@EnableAutoConfiguration
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
@AutoConfigurationPackage 导入主程序类所在的包及其子包
翻译过来叫自动配置包?指定了默认的包规则,看源码
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {
它导入了一个Registrar,这是个内部类,点进去看源码,debug调试
利用Registrar给容器中导入一系列组件,将指定的一个包com.atguigu.boot下的