我从来没有使用过java依赖注入功能,所以我去读了一些关于它的页面,我仍然不清楚单例和依赖注入之间的对决。
让我们举一个基本的例子:假设我正在使用MVC或MVVM模式来建立一个小型Java应用程序。我将从登录页面开始,请求用户名和密码。 稍后可能需要在应用程序中使用这两个信息,因此我需要将它们存储在一个简单的POJO中,可以从应用程序的任何视图访问。
那我该怎么办?单身人士?或者我应该@Inject POJO的构造函数并在需要时使用Injector获取它(就像使用Guice一样)?
感谢您的启发:)
答案 0 :(得分:1)
不应通过依赖注入注入简单的POJO。 它不应该是单例,因为您需要为每个请求创建一个新实例。
应该使用依赖注入来进行接线'你的应用程序组件/服务/存储库/ bean /等。它可以帮助您在组件之间进行应用程序模块化和封装。还有更多..
Singleton是指每个应用程序只需要一个Object的实例。它可以通过静态实例和getInstance方法(如单例模式)以编程方式实现,或者通过在Main类或上下文中仅创建一个实例来实现。在Spring中,除非配置为else,否则所有bean都将是单例,因为上下文将只创建一个实例。
当你需要连接你的单身人士时,依赖注入会变得很方便。彼此。
希望它得到足够的澄清。
答案 1 :(得分:1)
我会远离POJO注入依赖。在这种情况下,我会为我的ViewModel注入一个提供/管理用户的单例类型服务。如果他们需要当前用户,他们注入的服务为他们提供当前相关的POJO实例。只要您的用户管理服务包含在接口中,因此可以在不破坏功能的情况下进行更换,我认为这可以满足IoC。
这就是我遇到类似问题的方法,但我不确定这是最好的方法。