自动装配与进口

BOT*_*Jr. 1 java spring spring-boot

我对Spring Boot非常陌生,我正在尝试掌握它的概念。现在我遇到了@Autowired。我对此非常了解。

就像,当您编写@Autowired时,事情发生在两次通过中,而在第二次通过中,spring注入了bean。

现在,我有这个例子。

Class Abc {

    @Autowired
    private Xyz xyz;

    PSVM(String...z) {
        xyz.hello();
    } 
}
Run Code Online (Sandbox Code Playgroud)

导入基本上将代码导入文件中。

所以,

Import com.tilak.Xyz;

Class Abc {
    private Xyz xyz;

    PSVM(String...z) {
        xyz = new Xyz();
        xyz.hello();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

做第一个有什么好处吗?我应该在哪里使用第一个?

Reg*_*Reg 5

我相信你混淆了 Spring 和 Java 语言。

Autowire与“代码注入”有关。(就像您描述的那样。)并且是 Spring 框架的一部分。

但是,import(带有小写的 i)是 Java 语言的一部分。就像你说的,让其他代码可以在你添加它的类中使用。import无论您是否使用 Spring 框架,都将使用。

这两个语句的目的完全不同,并且与其他语句一起使用。

例如。您正在自动装配的类也将被导入(如果它在不同的 Java 包中)。

但话虽如此,@ImportSpring 框架中还有一个注解用于导入 Spring Configuration 类。我猜这是混淆的起源。

我强烈建议您完成 Java 课程的快速介绍。这将使您学习 Spring 更加愉快:)


小智 5

它基本上是关于对象创建的。当您自动装配某些东西时,该特定bean由spring上下文管理,并且只有一个特定类的实例将由spring上下文构造,并且当您将Autowire用于该类类型的Objects时,将提供该特定实例。但是,当您将某些东西导入到您的类中时,这并不意味着您拥有该特定类的实例。您必须自行初始化。而且,如果您要将其视为单例对象,则基本上将为其编写整个代码。

而且它们之间还有一些基本的区别,例如如果您要访问一个类中的静态变量,则不需要该类的实例。(您可以通过类引用访问它们)在那种情况下,您不需要自动装配,但需要Import语句。

但是另一方面,如果您对体验弹簧的力量感兴趣,例如Autowire Configurations,并且可以验证它们以及spring提供的所有出色功能,则需要根据需要使类成为组件和Autowire。