配置是否初始化Bean的方法

简介:

Spring Boot:定制自己的starter一文提到,只要DbCountRunner这个类在classpath路径下,Spring Boot会自动创建对应的spring bean并添加到应用程序上下文中。

在文章最后提到,Spring Boot的自动配置机制依靠@ConditionalOnMissingBean注解判断是否执行初始化代码,即如果用户已经创建了bean,则相关的初始化代码不再执行。

现在在上篇文章的基础上进行演示,看看@ConditionalOnMissingBean注解的作用。

How Do

  • 在pom文件中增加依赖
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
  • DbCountAutoConfiguration类中添加@ConditionalOnMissingBean注解,如下所示:
    @Configuration
    public class DbCountAutoConfiguration {
      @Bean
      @ConditionalOnMissingBean
      public DbCountRunner dbCountRunner(Collection<CrudRepository> repositories) {
          return new DbCountRunner(repositories);
      }
    }
  • 启动应用程序后,看到跟上篇文章相同的结果;
  • 修改日志级别为DEBUG,可以看到DbCountAutoConfiguration属于Positive match组。


    DbCountAutoConfiguration的自动配置信息
  • 在BookPubApplication类中定义DbCountRunner的spring bean

    @Bean
    public DbCountRunner dbCountRunner(Collection<CrudRepository> repositories) {
      return new DbCountRunner(repositories) {
          @Override
          public void run(String... strings) throws Exception {
              logger.info("Manually Declared DbCountRunner");
          }
      };
    }
  • 再次运行程序,观察结果,可以看到这个配置信息放在Negative matchs组中,显示判断条件不匹配,因为已经找到dbCountRunner这个bean。

    手动配置的Bean优先

修改后的日志信息,显示手动配置bean


    相关文章
    |
    10月前
    |
    Java 容器 Spring
    SpringBoot:Bean生命周期自定义初始化和销毁
    SpringBoot:Bean生命周期自定义初始化和销毁
    223 1
    |
    10月前
    |
    XML Java 数据格式
    Spring中bean的初始化和销毁几种实现方式详解
    Spring中bean的初始化和销毁几种实现方式详解
    199 0
    |
    容器
    IOC容器初始化过程中单例Bean的预实例化
    IOC容器初始化过程中单例Bean的预实例化
    65 0
    |
    Java 容器 Spring
    Spring5 - Bean的初始化和销毁的4种方式
    Spring5 - Bean的初始化和销毁的4种方式
    106 1
    |
    中间件 Java
    Bean异步初始化
    Bean异步初始化
    |
    Java Spring
    任何 bean 初始化回调前自定义逻辑
    任何 bean 初始化回调前自定义逻辑
    |
    存储 Java Spring
    Spring之Bean的生命周期源码解析(三 Bean的创建与销毁)
    Spring之Bean的生命周期源码解析(三 Bean的创建与销毁)
    272 0
    |
    Java 容器 Spring
    Bean的加载方式
    Bean的加载方式 1.XML方式声明bean 2.XML+注解方式声明bean 3.注解方式声明配置类 扩展1——FactoryBean 扩展2——配置类中导入原始的配置文件(系统迁移) 扩展3——proxyBeanMethods 4.使用@Import导入要注入的bean 扩展4——使用@Import注解还可以导入配置类 5.使用上下文对象在容器初始化完毕后注入bean 6.导入实现了ImportSelector接口的类,实现对导入源的编程式处理 bean的加载方式(七) bean的加载方式(八)
    193 1
    |
    Java 容器 Spring
    Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式
    Bean的生命周期指的是Bean从被创建到初始化再被销毁的过程,IOC容器管理Bean的生命周期。在Bean的整个生命周期的过程中的初始化和销毁过程的方法可以被自定义,IOC容器当Bean进行到当前生命周期的时候调用自定义的初始化和销毁方法。在配置文件中可以通过添加init-method和destroy-method指定自定义的初始化和销毁方法
    839 0
    Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式
    |
    XML 安全 前端开发
    Spring bean初始化及销毁你必须要掌握的回调方法
    Spring bean初始化及销毁你必须要掌握的回调方法
    328 0
    Spring bean初始化及销毁你必须要掌握的回调方法

    热门文章

    最新文章