Skip to content

一、 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("==============================================");  
    }  
}

其中只有两段有效代码

  1. @SpringBootApplication 注解
  2. 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 以上三个注解分别做了什么事情?

@SpringBootApplication注解

使用Parent.pom

SpringBoot里面的start 是怎么实现的? 通常我们引入了一个xxx-starter 就可以直接使用 这是为什么? 因为, start 的Maven/坐标中 引入了相关的依赖, 然后在MATA-INF 下面 会有一些 autoConfigration 默认会写好一些通用配置. 通过 Maven 的依赖传递,和 SpringBoot 提供的 @ConditionOnXXX 系列注解

waitingresult.com