Java 自动连线与导入

Java 自动连线与导入,java,spring,spring-boot,Java,Spring,Spring Boot,我对spring boot非常陌生,我正在努力掌握它的概念。现在我在里面遇到了@Autowired。我对此非常了解 比如,当您编写@Autowired时,事情发生在两个过程中,在第二个过程中,spring注入bean 现在,我有这个例子 Class Abc { @Autowired private Xyz xyz; PSVM(String...z) { xyz.hello(); } } 导入基本上将代码导入到文件中 所以 为什么我应该/不应

我对spring boot非常陌生,我正在努力掌握它的概念。现在我在里面遇到了@Autowired。我对此非常了解

比如,当您编写@Autowired时,事情发生在两个过程中,在第二个过程中,spring注入bean

现在,我有这个例子

Class Abc {

    @Autowired
    private Xyz xyz;

    PSVM(String...z) {
        xyz.hello();
    } 
}
导入基本上将代码导入到文件中

所以

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


做第一个有什么好处吗?我应该在哪里使用第一种语言,在哪里使用第二种语言?

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

Autowire
与“代码注入”有关。(正如您所描述的)并且是Spring框架的一部分

但是,
import
(带小写字母i)是Java语言的一部分。正如您所说的,在您添加代码的类中可以使用其他代码<无论您是否使用Spring框架,都将使用代码>导入

这两种陈述的目的完全不同,并且与其他陈述一起使用

比如说。 您正在自动连接的类也将被导入(如果它位于不同的Java包中)

尽管如此,Spring框架中还有一个
@Import
注释,用于导入Spring配置类。我猜这就是混乱的根源


我强烈建议您完成一个Java快速入门课程。这将使您学习Spring更加愉快:)

基本上是关于对象创建的。 当您自动关联某个对象时,该特定bean由spring上下文管理,spring上下文只会构造特定类的一个实例,并且当您对该类类型对象使用Autowire时,将提供该特定实例。 但是,当您将某些内容导入到类中时,这并不意味着您拥有该特定类的实例;你必须自己初始化它。如果你想把它当作一个单例对象,基本上你要为它编写完整的代码

此外,它们之间还有一些基本的区别,比如如果您想访问类中的静态变量,就不需要该类的实例。(您可以通过类引用访问它们)在这种情况下,您不需要自动连线,但需要导入语句


但另一方面,如果您对体验spring的强大功能感兴趣,比如Autowire配置,并且可能需要验证它们以及spring提供的所有那些很酷的功能,那么您需要使您的class a组件和Autowire成为您想要的

spring框架的思想是自动连接对象,而不是在任何情况下创建对象。正如在代码中所做的那样,它可以防止需要额外的代码。你所说的“错误”是什么意思?我的意思是,为什么我要使用前一个,为什么不使用后一个?做前一个的好处是什么?@Gimhani看到更新了当你使用spring@Autowired时,你不需要使用构造函数显式初始化对象。这在处理大型java应用程序时特别方便。
Import com.tilak.Xyz;

Class Abc {
    private Xyz xyz;

    PSVM(String...z) {
        xyz = new Xyz();
        xyz.hello();
    }
}