查看@Resource的源码,不难发现它可以被用在class、field和method上(在此不讨论写在class上的情况),那么写在field和setter上的区别是什么呢?只是可读性和简洁明了么,请问下哪种更为推荐呢?
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
这么说吧,注解如果写在属性上,那么底层操作是:发现该属性有该注解,然后获取注解的name,找到对应name的实体,如果没有name则根据类型来设置值。然后找到该属性对应的setter方法,然后将调用setter将对应的值传入进去。
如果直接写到setter方法上,那么也是同样的操作,但不同地方在于,写在属性上就多了一步找到setter方法的操作,写在setter上则少了这一步操作,这是个优化项。
对于性能来说,其实消耗不是很大,如果不是巨量操作的服务,一般的应用和服务都建议写在field上,因为方便维护和查看,因为本身对性能的影响微乎其微。
如果是巨量操作次数的系统,比如淘宝,那么强烈建议写在setter上,具体的你可以自己写demo,循环执行一亿次,或者10亿次,就能看出比较明显的区别了,但是你也会发现,1亿次的操作其实也差不了多少。
添加回答
举报
0/150
提交
取消