@Resource注解,写在filed上和setter上的区别?哪种更为推荐?

  • 查看@Resource的源码,不难发现它可以被用在class、field和method上(在此不讨论写在class上的情况),那么写在field和setter上的区别是什么呢?只是可读性和简洁明了么,请问下哪种更为推荐呢?


慕婉清6462132
浏览 822回答 2
2回答

慕雪6442864

这个是有历史渊源的,一开始的设计只支持一种,后来慢慢支持多种,具体的使用上最好跟公司整体的代码规范统一就行

当年话下

这么说吧,注解如果写在属性上,那么底层操作是:发现该属性有该注解,然后获取注解的name,找到对应name的实体,如果没有name则根据类型来设置值。然后找到该属性对应的setter方法,然后将调用setter将对应的值传入进去。如果直接写到setter方法上,那么也是同样的操作,但不同地方在于,写在属性上就多了一步找到setter方法的操作,写在setter上则少了这一步操作,这是个优化项。对于性能来说,其实消耗不是很大,如果不是巨量操作的服务,一般的应用和服务都建议写在field上,因为方便维护和查看,因为本身对性能的影响微乎其微。如果是巨量操作次数的系统,比如淘宝,那么强烈建议写在setter上,具体的你可以自己写demo,循环执行一亿次,或者10亿次,就能看出比较明显的区别了,但是你也会发现,1亿次的操作其实也差不了多少。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java