zoukankan      html  css  js  c++  java
  • @EnableAutoConfiguration激活自动装配

    给予上个例子,将WebConfiguration类上的@SpringBootApplication换成@EnableAutoConfiguration。启动并运行http://localhost:8080/hello,发现依然可以执行。

    说明:

    1、尽管WebConfiguration类不再是@Configuration,因为@EnableAutoConfiguration并非@Configuration的“派生”注解,但依然能执行。

    2、SpringApplication.run方法引导Spring Boot应用时,并不强制依赖@Configuration

    看出@EnableAutoConfiguration与@SpringBootApplication在激活自动装配方面是没有差别的,然而对被标注类的Bean的类型存在差异。为什么呢?因为CGLIB。

    @Component不存在CGLIB;而@Configuration执行了CGLIB提升。

    而spring-boot-autoconfigure作为boot的核心jar,其中提供了大量的内建自动装配@Configuration类,他们统一放在org.springframework.boot.autoconfigure包或子包下,同时,这些类均配置在META-INF/spring.factories资源中。

    #auto configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,=

    如何将RabbitAutoConfiguration自动装配到boot中呢?通过CGLIB。

    因此,一句话:@EnableAutoConfiguration无法装配大量的内建自动装配@Configuration类,而@SpringBootApplication可以(因为标注了@Configuration)。所以,尽量用@SpringBootApplication吧。

    但是,如果我非用@EnableAutoConfiguration而不用@SpringBootApplication该怎么办呢?详见下一篇《创建自动配置类

  • 相关阅读:
    nginx正则配置解释和fastadmin
    Centos7中systemctl命令详解
    layer的iframe层的传参和回参
    centOS下jenkins
    centos下nginx安装和配置
    python文件目录练习题【一】
    python正则模块re使用案例
    python字符串常用方法
    Swoole的多进程模块
    swoole学习
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11741336.html
Copyright © 2011-2022 走看看