在Spring Framework中,似乎beans are the preferred way of creating objects用于业务逻辑。
[依赖注入]是一个过程,通过这个过程,对象定义它们的依赖关系,即它们使用的其他对象,只能通过构造函数参数,工厂方法的参数或在构造对象实例后设置的属性。或从工厂方法返回。然后容器在创建bean时注入这些依赖项。这个过程基本上是相反的,因此名称为控制反转(IoC),bean本身通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖关系的实例化或位置。
因此,从我的简单理解来看,差异是这样的:
// Plain ol' Java
Foo f = new Foo();
// Using beans in Spring Framework
Foo f = FooFactory.get();
通常说,在@Configuration
类和@Bean
定义之外的方法中,开发人员应该只使用bean来获取对象,这是不是过于简单化了?具体来说,在我需要一个新对象的情况下,我应该注入原型bean而不是直接使用new
关键字吗?
我不确定我遵循Spring约定的代码示例如下所示。
// Construct a new object that will be created in the database
RecordDto record = new RecordDto();
// Or should I be using some bean factory?
RecordDto record = RecordDtoFactory.get();
答案 0 :(得分:1)
请阅读心爱的马丁福勒的this Article。 我认为当您的应用程序中的某个组件依赖于其他组件来完成某些功能时,IOC概念非常有用。 IoC容器将负责管理软件组件的创建和生命周期,并将它们注入相关组件,而不是手动访问这些组件实例。
例如,当某些服务需要DAO实例时,它将从容器中获取它而不是创建它。
但是在DTO的情况下,他们只会保留数据并且这不是真正的依赖。所以我认为在这种情况下使用“new”更好。