男人,不能说不行!

时间:2021-7-4 作者:qvyue

原文地址:https://alphahinex.github.io/2021/06/20/to-father/

男人,不能说不行!
cover

description: “致敬每一位为了信念拼命坚持的人”
date: 2021.06.20 10:34
categories:
– Spring
tags: [Spring, Spring Boot]
keywords: Condition, OnBeanCondition, ConditionalOnMissingBean, BeanFactory, BeanDefinitionRegistry, ApplicationContext


在这个特别的日子里,我第一个想到的,是 李健 在 我是歌手 中演唱的《父亲写的散文诗》,又让我想起了参加我是歌手的每一位歌手,对待自己所热爱的事业的坚持和执着。

歌手,是一个职业,但每一个好的歌手,都不会仅仅把它当做一个职业。

拥有坚定的信念时,一切阻碍都能想办法克服;否则,任何理由都可以成为失败的借口。

就像父亲为了孩子,会竭尽全力一样。

借此机会,致敬每一位为了信念,不轻言放弃,拼命坚持的人!

真的是 @ConditionalOnMissingBean 不行吗?

Spring Boot 提供了一系列 @ConditionalOnXXXX 注解,用来在满足或不满足一定条件时,才进行 Bean 的注册。例如:

@Configuration(proxyBeanMethods = false)
public class MyAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public SomeService someService() {
        return new SomeService();
    }

}

那么,假如定义了一个 TestService 接口,按如下方式定义其实现类时,会发生什么呢?

@Service
@ConditionalOnMissingBean(TestService.class)
public class TestServiceImpl implements TestService
  • 这个名为 testServiceImpl 的 Bean 会不会注册上呢?为什么?
  • @Autowired TestService 时,会不会得到实例呢?为什么?

先卖个关子,不说明原因,仅仅说下结果:

  1. 名为 testServiceImpl 的 Bean 会被注册
  2. 但无法注入 TestService 的实例

提供一个包含上述代码的可运行环境:https://github.com/AlphaHinex/conditional-on-missing-bean-demo

欢迎感兴趣的小伙伴后台留言说明上面两个问题的原因,谜底下周揭晓!

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。