繁体   English   中英

防止在Spring bean中两次调用setter吗?

[英]Preventing a setter being called twice in a Spring bean?

一位同事要我将我们的setter转移到我们的Spring bean中的构造函数中,因为“ setter公开了一个私有变量,在Spring的构建阶段之后可能会对其进行更改”。

虽然我可以体会到这种感觉,但是我不确定这是最好的方法吗? 出于这个原因,我想知道Spring bean中是否存在防止两次调用setter的方法,还是应该检查一下是否在构造后阶段之前?

我担心的是构造函数使用索引,而不是命名属性。 从代码维护的角度来看,这不是很友好。

当您在私有字段上使用@Autowired@Inject时,Spring支持通过反射插入字段值。 这样,您无需公开设置器,也无需使用构造函数进行依赖项注入。

如果希望设置器出现,则可以考虑定义自己的注释,定义切入点并创建一个方面,以防止在对象上至少调用一次该方法时执行该方法。

我个人更喜欢通过构造函数填充这些字段并将其标记为final。 考虑到代码的可读性,有时由此产生的样板数量可能会过高。 为了提高可读性,您可能需要使用@Qualifier@Named批注,以进一步指定在存在多种可能性时哪个对象应满足依赖关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM