@SpringBootApplication(scanBasePackages = {"com.XXX"}) 标注 启动类注解。
内含源码注解
@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,@EnableAutoConfiguration,@ComponentScan。
也就是说我们如果不用 @SpringBootApplication 这个复合注解,而是直接使用最下面这三个注解,也能启动一个 SpringBoot 应用。