Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 新关键字在Spring框架中的作用_Java_Spring_Inversion Of Control - Fatal编程技术网

Java 新关键字在Spring框架中的作用

Java 新关键字在Spring框架中的作用,java,spring,inversion-of-control,Java,Spring,Inversion Of Control,在Spring框架中,它似乎用于业务逻辑 [Dependency injection]是一个过程,对象仅通过构造函数参数、工厂方法的参数或在对象实例构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。然后,容器在创建bean时注入这些依赖项。这个过程基本上是反向的,因此称为控制反转(inversionofcontrol,IoC),bean本身通过使用类的直接构造或服务定位器模式等机制来控制其依赖项的实例化或位置 从我的简单理解来看,区别是这样的: // Pla

在Spring框架中,它似乎用于业务逻辑

[Dependency injection]是一个过程,对象仅通过构造函数参数、工厂方法的参数或在对象实例构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。然后,容器在创建bean时注入这些依赖项。这个过程基本上是反向的,因此称为控制反转(inversionofcontrol,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();
请阅读亲爱的马丁·福勒的作品。 我认为当应用程序中的某个组件依赖于其他组件来完成某些功能时,IOC概念非常有用。IoC容器将负责管理软件组件的创建和生命周期,并将它们注入依赖组件中,而不是手动访问这些组件实例

例如,当某个服务需要DAO实例时,它将从容器中获取它,而不是创建它


但在DTO的情况下,它们只会保存数据,这不是真正的依赖关系。因此,我认为在这种情况下使用“new”更好。

“(…)似乎bean是创建用于业务逻辑的对象的首选方式”-需要引用。@kryger我在Spring框架文档的“Spring IoC容器和bean简介”部分的第一段中添加了引用。是的,但您的问题是关于业务/域对象,而不是Spring文档所讨论的。我个人从未见过一个项目以这种方式创建和管理域对象,这就是为什么我认为“创建对象的首选方式”只是一个观点。