我对弹簧靴非常陌生,我正在尝试掌握它的概念。现在我遇到了@Autowired。我对此非常了解。
就像,当您编写@Autowired时,事情发生在两次通过中,而在第二次通过中,Spring注入了bean。
现在,我有这个例子。
Class Abc {
@Autowired
private Xyz xyz;
PSVM(String...z) {
xyz.hello();
}
}
导入基本上将代码导入文件中。
所以
Import com.tilak.Xyz;
Class Abc {
private Xyz xyz;
PSVM(String...z) {
xyz = new Xyz();
xyz.hello();
}
}
为什么我不应该/不应该选择后者?
做第一个有什么优势吗?我在哪里应该使用第一个?在哪里应该使用第二个?
答案 0 :(得分:3)
它基本上是关于对象创建的。 当您自动装配某些东西时,那个特定的bean是由spring上下文管理的,只有一个特定类的实例将由spring上下文构造,并且当您为该类类型的Objects使用Autowire时,将提供那个特定的实例。 但是,当您将某些东西导入到您的类中时,这并不意味着您拥有该特定类的实例。您必须自行初始化。而且,如果您要将其视为单例对象,则基本上将为其编写整个代码。
此外,它们之间还有一些基本区别,例如,如果您要访问一个类中的静态变量,则不需要该类的实例。 (您可以通过类引用访问它们)在那种情况下,您不需要自动装配,但需要Import语句。
但是,另一方面,如果您对体验弹簧的力量感兴趣,例如Autowire配置,并且可以验证它们以及spring提供的所有出色功能,则需要根据需要将类设为组件和Autowire。
答案 1 :(得分:1)
我相信您会混淆Spring和Java语言。
Autowire
与“代码注入”有关。 (就像您描述的那样。)并且是Spring框架的一部分。
但是,import
(带有小写的i)是Java语言的一部分。就像您说的那样,使其他代码可用于添加代码的类中。无论您使用的是Spring框架,都将使用import
。
这两个语句的用途完全不同,可以与其他语句一起使用。
例如。 您要自动装配的类也将被导入(如果在不同的Java包中,则为 )。
但是,话虽如此,Spring框架中还有一个@Import
批注,用于导入Spring Configuration类。我猜这就是混乱的根源。
我强烈建议您快速学习Java课程。这将使您学习Spring更加愉快:)