【发布时间】:2023-03-24 14:50:01
【问题描述】:
在 Spring Framework 中,beans are the preferred way of creating objects 似乎用于业务逻辑。
[依赖注入]是一个过程,对象定义它们的依赖关系,即它们工作的其他对象,仅通过构造函数参数、工厂方法的参数或在对象实例构造后设置的属性或从工厂方法返回。然后容器在创建 bean 时注入这些依赖项。这个过程与 bean 本身通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖项的实例化或位置基本上是相反的,因此称为控制反转 (IoC)。
所以从我的简单理解来看,区别是这样的:
// 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();
【问题讨论】:
-
"(...) 似乎 bean 是创建用于业务逻辑的对象的首选方式" - 需要引用。
-
@kryger 我在 Spring Framework 文档的“Spring IoC 容器和 bean 简介”部分的第一段中添加了引用。
-
是的,但您的问题是关于 business/domain objects 这不是 Spring 文档所说的。我个人从未见过以这种方式创建和管理域对象的项目,这就是为什么我发现“创建对象的首选方式”只是一种观点。
标签: java spring inversion-of-control