@java中的组件与新操作符

@java中的组件与新操作符,java,spring,model-view-controller,Java,Spring,Model View Controller,我不熟悉Spring的概念,所以我对@Component没有什么疑惑,默认情况下,它是一个单例,每当加载一个类并重用同一个实例时,它就会创建一个实例;新操作符也会发生同样的情况。如果一个类被声明为singleton,那么我们也可以使用setter和getter来更改该类的属性 @组件注释表示对象由Spring管理:即框架创建它。通常,您应该使用Spring使用dependenci注入机制:我的意思是您不需要自己创建组件实例,而是将提供的实例注入到代码中。 在这里阅读有关国际奥委会的范例: 此外,

我不熟悉Spring的概念,所以我对
@Component
没有什么疑惑,默认情况下,它是一个单例,每当加载一个类并重用同一个实例时,它就会创建一个实例;新操作符也会发生同样的情况。如果一个类被声明为singleton,那么我们也可以使用setter和getter来更改该类的属性

@组件注释表示对象由Spring管理:即框架创建它。通常,您应该使用Spring使用dependenci注入机制:我的意思是您不需要自己创建组件实例,而是将提供的实例注入到代码中。 在这里阅读有关国际奥委会的范例:

此外,您还可以将Spring托管bean的作用域更改为与singleton()不同的范围,但是如果您已经自己内嵌了一些singleton类,那么您就不能重写它的行为


顺便说一句,你不应该对单例使用new操作符(实际上你不能,因为有私有构造函数),而是使用getInstance()之类的方法,组件注释说对象是由Spring管理的:即框架创建的。通常,您应该使用Spring使用dependenci注入机制:我的意思是您不需要自己创建组件实例,而是将提供的实例注入到代码中。 在这里阅读有关国际奥委会的范例:

此外,您还可以将Spring托管bean的作用域更改为与singleton()不同的范围,但是如果您已经自己内嵌了一些singleton类,那么您就不能重写它的行为


顺便说一句,您不应该对单例使用new操作符(实际上,由于私有构造函数的原因,您不能这样做),而是使用getInstance()之类的方法,当您调用
new
时,您是在运行时手动创建实例的

假设您有一个控制器被调用N次,im又调用了一个服务

Java

在纯java中,您将通过调用
New
创建一个新对象。也就是说,您正在创建“n”个对象

弹簧

在Spring中,当您在服务器中部署应用程序或加载Spring
XML/Configuration类时,Spring将创建所有带注释类的实例,并存储在Spring容器中。现在,即使您的控制器被称为“n”次,spring也会一次又一次地使用相同的对象

因为在调用
new
时,您不会调用
new
而是使用另一个名为Autowired

的注释,所以您在运行时手动创建实例

假设您有一个控制器被调用N次,im又调用了一个服务

Java

在纯java中,您将通过调用
New
创建一个新对象。也就是说,您正在创建“n”个对象

弹簧

在Spring中,当您在服务器中部署应用程序或加载Spring
XML/Configuration类时,Spring将创建所有带注释类的实例,并存储在Spring容器中。现在,即使您的控制器被称为“n”次,spring也会一次又一次地使用相同的对象

因为您不会调用
new
,而是使用另一个名为Autowired

的注释,Spring负责创建实例,但我的问题是,当作用域为单例时,对象只创建一次,并且可以重复使用,新操作符也会发生同样的情况,这意味着对象是使用新操作符创建的,可以在进一步的应用中使用。。那么功能上有什么不同呢?@component用于控制反转:即对象不是在代码中创建的,而是从外部提供的(在本例中是由Spring提供的),因此它可以由Spring替代。如果您在纯Java中实现singleton,那么您的代码将严格依赖于特定的objectSpring来创建实例,但我的问题是,当作用域为单例时,对象只创建一次,并且可以重复使用,新操作符也会发生同样的情况,这意味着对象是使用新操作符创建的,可以在进一步的应用中使用。。那么功能上有什么不同呢?@component用于控制反转:即对象不是在代码中创建的,而是从外部提供的(在本例中是由Spring提供的),因此它可以由Spring替代。如果您在纯Java中实现singleton,那么您的代码将严格依赖于该特定对象