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该怎么办呢?详见下一篇《创建自动配置类

  • 相关阅读:
    選定下拉列表的方法
    JAVA学习路线
    封装
    重写(Overriding)
    java内存泄露
    学习实例.文章管理.文章类.Article.java
    方法重载
    学习实例.文章管理.分页查询类.Page.java
    学习实例.文章管理.目标与经验总结
    Java多线程1
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11741336.html
Copyright © 2011-2022 走看看