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

“@Conditional注解有什么用?”

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

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

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

考察目的

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

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

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

问题分析

@Conditional是Spring4版本里面提供的注解,它的作用是给需要装载的Bean增加一个条件判断,

只有满足条件的Bean才会装载到IOC容器。

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

  • @Conditional注解可以修饰在类或者方法上

  • @Conditional注解可以接收一个或多个实现了Condition接口的类。

Condition接口的定义如图所示,它提供了一个返回值为boolean的matches方法,基于@Conditional本身的作用

不难猜出它应该是用来实现Bean是否能被装载的判断逻辑的。

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

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

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

高手:

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

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

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

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

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

总结

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

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

 另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新200期,总计超过20W字!

【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

需要高手面试文档面试文档的小伙伴可以扫描下方二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着Mic学架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值