gpt4 book ai didi

java - 防止setter在Spring bean中被调用两次?

转载 作者:行者123 更新时间:2023-12-01 11:16:19 25 4
gpt4 key购买 nike

一位同事要求我将 setter 移至 Spring bean 中的构造函数,因为“setter 公开了一个私有(private)变量,该变量在 Spring 的构造阶段后可能会发生更改”。

虽然我可以理解这种情绪,但我不确定这是最好的方法吗?出于这个原因,我想知道 Spring bean 中是否有办法防止 setter 被调用两次,或者我们是否应该检查一下我们是否处于构建后阶段之前?

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

最佳答案

当您在私有(private)字段上使用@Autowired@Inject时,Spring支持通过反射插入字段值。这样,您就不必公开 setter,也不必使用构造函数来进行依赖项注入(inject)。

如果您希望 setter 存在,您可以考虑定义自己的注释、定义切入点并创建一个方面,以防止方法执行(如果该方法已在对象上调用至少一次)。

我个人更喜欢通过构造函数填充这些字段并标记为最终字段。当考虑代码的可读性时,由此生成的样板文件的数量有时可能令人望而却步。为了提高可读性,您可能需要使用@Qualifier@Named注释来进一步指定当存在多种可能性时哪个对象应该满足依赖关系。

关于java - 防止setter在Spring bean中被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com