我是一个新手,我最近开始学习Spring.in春天依赖注入,我们 可以注入一个bean的方式有两种,一种是通过另一个是通过 setter方法。我的问题是,对于什么情况构造方法注入更好,并且对于什么情况setter方法注入更好。我只关注在哪里使用? 给我一个例子,如果可能的话...等待你的宝贵回复。什么时候去构造函数注入和什么时候去参数注入Spring
回答
还有第三种方法:场喷射。
您可以在(甚至私人)字段直接应用注释@Resource
,@Inject
或@Autowire
。这个领域甚至不需要拥有一个吸气者或者设置者。
如果您正在构建Spring应用程序,并且没有计划在非Spring应用程序或库中使用这些类,那么对于90%的类来说,字段注入就足够了。 我更喜欢它,因为它代码少。
当然,如果您使用强制引用的构造函数,那么创建新实例时就无法忘记其中的一个。但是(这是我的观点,与Alef Arendsen在他3年前的Spring 2.0博客文章“Setter injection versus constructor injection and the use of @Required"”中有所不同),你有一个spring bean,而不是一个简单的类,而这个bean是由spring创建的,而不是由你直接创建的所以,如果你使用@Resource
,@Inject
或@Autowire
的属性或者setter春季检查他们太不把豆和服务的整个应用程序如果不是所有的引用可满足
我想知道你会如何在@私有字段中使用@Inject对一个类进行单元测试.. – 2013-03-21 09:16:10
@ denis.solonenk我使用一个Util创建了mock并为所有标有'@ Resource','@ Inject',给定对象的'@ Autowire'。 - 这个工具是为开源设计的,不幸的是我没有找到发布它的时间。 – Ralph 2013-03-21 12:10:44
我想说的去constructor injection
。
在某些情况下,如果依赖项是可选的,则为setter injection
。
如果您强制使用setter注入并使用Spring,请使用@Required
来要求Spring强制执行它。
在所有情况下应用常识:)
感谢您的回答 – 2013-03-14 06:04:13
@Arun接受此答案,如果这是您要求的。 – nav0611 2013-03-14 06:20:45
- 1. 什么时候注入构造函数,什么时候是CDI
- 2. 什么时候去接口,什么时候去抽象类
- 3. 什么时候使用依赖注入?
- 4. 什么时候应该去接口,什么时候去抽象类?
- 5. 什么时候应该去Silverlight和XNA?
- 6. 什么时候加入名字,什么时候不加入?
- 7. 零参数构造函数有什么好处?什么时候是理想的?
- 8. 我们什么时候去找树数据结构?
- 9. 什么时候Python导入?
- 10. 什么时候应该使用Instance和Provider来注入bean?
- 11. 什么时候有人关注 - Twitter API
- 12. 统一:什么时候注册
- 13. android - 什么时候做GCM注册
- 14. 什么时候去原生android应用程序,什么时候去混合模型使用HTML5
- 15. 我们什么时候需要一个默认构造函数?
- 16. 什么时候需要从构造函数调用`super`?
- 17. 什么时候在嵌套类中调用构造函数(Java)
- 18. 什么时候应该将构造函数设置为constexpr?
- 19. 在Spring中通过注释向构造函数注入参数
- 20. Spring setter注入和构造函数注入
- 21. 什么是复制构造函数,什么时候应该在C#中使用?
- 22. 什么时候复制构造函数和析构函数被调用,为什么?
- 23. 什么时候执行了javascript函数
- 24. 什么时候使用__proto__和什么时候使用原型
- 25. 什么时候使用Ruby和什么时候使用PHP
- 26. 在Spring中构造函数注入
- 27. 什么时候应该实际去DDD和什么时候被认为是过度杀伤?
- 28. 记录,什么时候和什么?
- 29. 什么时候创建了app.config,什么时候app.exe.config和有什么区别
- 30. 什么时候'System.ExecutionEngineException'ocurs?
[这](HTTP:// blog.springsource.com/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/)将帮助你... :) – 2013-03-14 05:18:04
http://misko.hevery。 com/2009/02/19/constructor-injection-vs-setter-injection/ – Shashi 2013-03-14 05:19:44