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

     

     

     

     









  • 相关阅读:
    C#根据IP地址和子网掩码计算广播地址
    关于ZIP大文件压缩
    JVM内存的设置
    Eclipse下内存溢出错误(OutOfMemoryError)
    实体化视图的使用心得(转)
    Java 调用cmd.exe命令
    select 操作选中添加、删除操作Javascript
    quartz定时任务时间设置
    手动安装 MyEclipse6.5 FindBugs
    App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.-解决办法
  • 原文地址:https://www.cnblogs.com/crelle/p/12771133.html
Copyright © 2011-2022 走看看