天天看点

【Java面试】这题答不上 建议认真看完!@Conditional注解有什么用

作者:跟着Mic学架构

“@Conditional注解有什么用?”

但凡有Java开发经验的同学,这个问题应该都要能回答出来。

如果回答不上来,建议认真看完这篇文章。

大家好,我是Mic,咕泡科技的联合创始人。

考察目的

@Condition是Spring4.x版本引入的一个注解,由于这个问题本身比较简单,所以考察范围一般是工作1到3年左右。

考察目的就是了解求职者对Spring Framework里面注解的了解情况。

作为求职者,回答的时候不过过度解读面试官的意图,简单明了的回复即可。

问题分析

@Conditional是Spring4版本里面提供的注解,它的作用是给需要装载的Bean增加一个条件判断,只有满足条件的Bean才会装载到IOC容器。

@Conditional注解的定义如图所示,从这个注解中可以了解到几个关键信息

  • @Conditional注解可以修饰在类或者方法上
  • @Conditional注解可以接收一个或多个实现了Condition接口的类。
【Java面试】这题答不上 建议认真看完!@Conditional注解有什么用

Condition接口的定义如图所示,它提供了一个返回值为boolean的matches方法,基于@Conditional本身的作用不难猜出它应该是用来实现Bean是否能被装载的判断逻辑的。

【Java面试】这题答不上 建议认真看完!@Conditional注解有什么用

@Conditional注解既然是用来判断Bean是否能被装载的条件,那么意味着我们可以在Bean的描述逻辑上增加这样一个注解然后通过重写Condition接口的matches方法,自定义Bean装载的条件。

比如下图这种使用方法,当Spring解析这个配置类的时候,HelloService这个bean是否能被装载到IOC容器,取决于CustomizeCondition里面的matches方法的返回值,返回true才可以被装载。

【Java面试】这题答不上 建议认真看完!@Conditional注解有什么用

这就给我们Bean的装载过程增加了很多的灵活性。

高手

@Conditional注解的作用是为Bean的装载提供了一个条件判断。

只有满足条件的情况下,Spring才会把当前Bean装载到IOC容器中。

这个条件的实现逻辑,我们可以实现Condition接口并重写matches方法自己去实现。

所以@Conditional注解增加了Bean装载的灵活性。

在Spring Boot里面,对@Conditional注解做了更进一步的扩展,比如增加了@ConditionalOnClass、@ConditionalOnBean等注解,使得我们在使用的过程中不再需要去写条件的逻辑。

总结

这个问题很好回答,切记不要绕来绕去说一大堆,大家可以直接参考高手的回答

好的,今天的文章就到这里结束了,喜欢这个作品的小伙伴记得点赞收藏加关注!!!

需要高手面试文档合集(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以后台私信发送【Mic】。

【Java面试】这题答不上 建议认真看完!@Conditional注解有什么用

继续阅读