前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >配置是否初始化Bean的方法

配置是否初始化Bean的方法

作者头像
阿杜
发布2018-08-06 14:14:37
8730
发布2018-08-06 14:14:37
举报
文章被收录于专栏:阿杜的世界

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

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

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

How Do

  • 在pom文件中增加依赖
代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
  • DbCountAutoConfiguration类中添加@ConditionalOnMissingBean注解,如下所示:
代码语言:javascript
复制
@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
代码语言:javascript
复制
@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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015.12.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • How Do
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档