我对春 Boot 很陌生,我正在努力掌握它的概念。现在我在里面看到了@Autowired。我基本上能理解。
就像,当你写@Autowired时,事情发生在两个通道中,在第二个通道中,spring注入bean。
现在,我有这个例子
Class Abc {
@Autowired
private Xyz xyz;
PSVM(String...z) {
xyz.hello();
}
}
Import基本上是将代码导入文件。
所以,
Import com.tilak.Xyz;
Class Abc {
private Xyz xyz;
PSVM(String...z) {
xyz = new Xyz();
xyz.hello();
}
}
为什么我应该/不应该选择后者?
做第一个有什么好处吗?我应该在哪里使用第一个,在哪里使用第二个?
2条答案
按热度按时间7uhlpewt1#
它基本上是关于对象创建的。当你Autowire某个东西时,那个特定的bean是由spring context管理的,只有一个特定class的示例会由spring context构造,当你为那个class类型Object使用Autowire时,那个特定的示例会被提供。但是当你把一些东西导入到你的类中时,这并不意味着你有那个特定类的示例;你必须自己初始化它。如果你想把它当作一个单例对象,基本上你会为它编写整个代码。
它们之间还有一些基本的区别,比如如果你想访问一个类中的静态变量,你不需要这个类的示例。(你可以通过类引用来访问它们)在这种情况下,你不需要自动连接,但你需要导入语句。
但另一方面,如果你有兴趣体验spring的强大功能,比如Autowire Configurations,并且可能会验证它们以及spring提供的所有那些很酷的功能,你需要让你的类成为一个组件,并根据你的需要自动连接。
dced5bon2#
我相信你混淆了Spring和Java语言。
Autowire
与“代码注入”有关。(就像你描述的那样。)并且是Spring框架的一部分。但是,
import
(小写i)是Java语言的一部分。如您所述,它使其他代码可以在添加它的类中使用。import
将被使用,无论您是否使用Spring框架。这两种说法有着完全不同的目的,并与其他人一起使用。
举例来说:您正在自动装配的类也将被导入(* 如果它在不同的Java包中 *)。你不需要创建一个示例。换句话说,您不必使用'new'关键字-Spring框架将为您做这件事。(nice right? )
但话虽如此,Spring框架中还有一个
@Import
注解,用于导入Spring Configuration类。我猜这就是混乱的起源。