一、 SpringBoot 的启动类
java
@Slf4j //日志门面注解
@SpringBootApplication // SpringBoot 启动类注解
public class MallAuthApplication {
public static void main(String[] args) {
SpringApplication.run(MallAuthApplication.class, args);
log.info("==============================================");
log.info("=== MallAuthApplication start success ===");
log.info("==============================================");
}
}
其中只有两段有效代码
@SpringBootApplication
注解SpringApplication.run(MallAuthApplication.class, args);
调用的 Run 方法
分别是什么意思 @SpringBootApplication
: 这是一个方便的注解,等效于声明以下三个注解
java
/**
* 指示一个 configuration 类,该类声明一个或多个 @Bean 方法,
* 并触发 auto-configuration 和 component scanning。
* 这是一个方便的注解,等效于声明 以下三个注解
* @SpringBootConfiguration、@EnableAutoConfiguration 、 @ComponentScan。
*/
@Target(ElementType.TYPE) // 元注解
@Retention(RetentionPolicy.RUNTIME) // 元注解
@Documented // 元注解
@Inherited // 元注解
@SpringBootConfiguration //Spring Boot 配置
@EnableAutoConfiguration //Spring Boot 开启自动配置
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) // 包扫描
public @interface SpringBootApplication {
}
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan 以上三个注解分别做了什么事情?
使用Parent.pom
SpringBoot里面的start 是怎么实现的? 通常我们引入了一个xxx-starter 就可以直接使用 这是为什么? 因为, start 的Maven/坐标中 引入了相关的依赖, 然后在MATA-INF 下面 会有一些 autoConfigration 默认会写好一些通用配置. 通过 Maven 的依赖传递,和 SpringBoot 提供的 @ConditionOnXXX
系列注解