自动装配与进口

时间:2018-09-07 09:16:22

标签: java spring spring-boot

我对弹簧靴非常陌生,我正在尝试掌握它的概念。现在我遇到了@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();
    }
}

为什么我不应该/不应该选择后者?

做第一个有什么优势吗?我在哪里应该使用第一个?在哪里应该使用第二个?

2 个答案:

答案 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更加愉快:)