SPRING 六月 20, 2021

男人,不能说不行!

文章字数 1.4k 阅读约需 1 mins. 阅读次数

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

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

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

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

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

真的是 @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

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

0%