将EX中的 @Autowired 字段设置为私有以进行DI支持是不错的做法?
我认为应该是,因为没有人想直接在课外访问这些字段。
但另一方面,Spring需要访问这些。我知道,当它们是私人的时候也可以做到这一点,但是它会引起麻烦吗?例如性能问题? (如果我在这种情况下理解得很好,Spring会使用Reflection,这会导致性能下降。)或者这是无关紧要的?
我用Google搜索并阅读了搜索此问题的答案的教程,但我没有找到任何“好”的答案。
哪个最佳选择作为此字段的访问修饰符? 你能帮助我理解这个或者给我一个资源,在哪里可以找到答案吗?
答案 0 :(得分:0)
当您标记为自动装配对象时,您说容器处理该对象的值,因此您只需将其公开通过容器即可访问。因此它已被定义为public和singleton:这意味着您可以将引用设置为private,以便它不会在类外部访问,但它的值仍可通过容器访问。如果你想将这些变量设置为私有,这不会对你造成伤害,但显然它不是法律,因为它总是取决于你的需求。如果您正在观看表演,请确保私人或公众不会改变任何事情。一定要选择合适的范围(单身,原型......),这会有所帮助。 如果您需要更多信息,请阅读以下问题:
How does @autowired annotation works for a private field?
How does Spring @Autowired work
why @autowired in spring does not need setter method for private instance variable?