zoukankan      html  css  js  c++  java
  • @SpringBootApplication注解的理解

    • @SpringBootApplication

    废话不多说,我们直接贴出来SpringBoot的官方给出的源码:
    package org.springframework.boot.autoconfigure;
    @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) })
    public @interface SpringBootApplication {

    }

    可以分为这两类:
    第一类
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited

    第二类
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan

    第一类我们忽略,直接看第二类
    下面是每一类的源码:

    @SpringBootConfiguration

    package org.springframework.boot;
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Configuration
    public @interface SpringBootConfiguration {

    }

    @EnableAutoConfiguration

    package org.springframework.boot.autoconfigure;
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import(AutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {

    }

    @ComponentScan

    package org.springframework.context.annotation;
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Documented
    @Repeatable(ComponentScans.class)
    public @interface ComponentScan {
    }


    于此得出@SpringBootApplication由@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan组成。

    我们来看看官方https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/api/    API是怎么解释的

     

    @SpringBootApplication  注解在 这个包目录下 org.springframework.boot.autoconfigure;

    重点就是这句话“Indicates a configuration class that declares one or more @Bean methods and also triggers auto-configuration and component scanning. This is a convenience annotation that is equivalent to declaring @Configuration@EnableAutoConfiguration and @ComponentScan.”

    我们翻一下:

    指示一个配置类,该类声明一个或多个@Bean方法,并且还触发自动配置和组件扫描。这是一个方便注释,等效于声明@ Configuration,@ EnableAutoConfiguration和@ComponentScan。

    从中我们可以明确的知道@SpringBootApplication==@Configuration+@EnableAutoConfiguration+@ComponentScan

    2020-04-25 00:12:18

     

     

     

     









  • 相关阅读:
    SQL 学习之路 (一)
    简单、易懂、通用的微信号、二维码轮播js
    本地phpstudy 新建站点运行步骤
    react-native 项目环境搭建
    JavaScript与DOM(下)
    JavaScript与DOM(上)
    ThisYes,this!
    编写高质量的JavaScript代码的基本要点
    变量对象(Variable Object)
    JavaScript核心
  • 原文地址:https://www.cnblogs.com/crelle/p/12771133.html
Copyright © 2011-2022 走看看