为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕婉清6462132 2018-07-23 07:18:21
查看@Resource的源码,不难发现它可以被用在class、field和method上(在此不讨论写在class上的情况),那么写在field和setter上的区别是什么呢?只是可读性和简洁明了么,请问下哪种更为推荐呢?
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

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


查看完整回答
反对 回复 2018-08-12
?
当年话下

TA贡献1890条经验 获得超9个赞

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


查看完整回答
反对 回复 2018-08-12
  • 2 回答
  • 0 关注
  • 845 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信