我是Spring概念的新手,所以我对@Component
几乎没有什么困惑,默认情况下是一个单例,只要加载一个类并重复使用相同的实例,就会创建一个实例;新操作员也是如此。如果一个类声明为singleton,我们可以使用setter和getter更改类的属性,也可以使用new运算符。
答案 0 :(得分:1)
@Component注释表示该对象由Spring管理:即框架创建它。通常你应该使用Spring的dependdenci注入机制:我的意思是你不需要自己创建组件实例,而是将提供的实例注入你的代码中。 在这里阅读IoC范例:https://en.wikipedia.org/wiki/Inversion_of_control
另外,您实际上可以将Spring托管bean的范围更改为不同的单例(see tutorial here),但如果您已经自己实现了一些单例类,则无法覆盖它的行为
顺便说一句,你不应该使用 new 运算符来实现单例(实际上你因为私有构造函数而无法使用),使用 getInstance()等方法代替
答案 1 :(得分:1)
当您调用new
时,您将在运行时手动创建实例。
假设您有一个名为“N' N'我称之为服务的次数。
Java
在普通的java中,您将通过调用new
来创建一个新对象。这意味着,您正在创建' n'对象数
<强>弹簧强>
在Spring中,当您只是在服务器中部署应用程序或加载spring XML/Configuration class
时,Spring会创建所有注释类的实例,并存储在spring容器中。现在,即使你的控制器被调用了一次,spring也会一次又一次地使用同一个对象
因为您不会调用new
而是使用另一个名为自动装配的注释