java 自动连线与导入

1cklez4t  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(126)

我对春 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();
    }
}

为什么我应该/不应该选择后者?
做第一个有什么好处吗?我应该在哪里使用第一个,在哪里使用第二个?

7uhlpewt

7uhlpewt1#

它基本上是关于对象创建的。当你Autowire某个东西时,那个特定的bean是由spring context管理的,只有一个特定class的示例会由spring context构造,当你为那个class类型Object使用Autowire时,那个特定的示例会被提供。但是当你把一些东西导入到你的类中时,这并不意味着你有那个特定类的示例;你必须自己初始化它。如果你想把它当作一个单例对象,基本上你会为它编写整个代码。
它们之间还有一些基本的区别,比如如果你想访问一个类中的静态变量,你不需要这个类的示例。(你可以通过类引用来访问它们)在这种情况下,你不需要自动连接,但你需要导入语句。
但另一方面,如果你有兴趣体验spring的强大功能,比如Autowire Configurations,并且可能会验证它们以及spring提供的所有那些很酷的功能,你需要让你的类成为一个组件,并根据你的需要自动连接。

dced5bon

dced5bon2#

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

Autowire与“代码注入”有关。(就像你描述的那样。)并且是Spring框架的一部分。
但是,import(小写i)是Java语言的一部分。如您所述,它使其他代码可以在添加它的类中使用。import将被使用,无论您是否使用Spring框架。

这两种说法有着完全不同的目的,并与其他人一起使用。

举例来说:您正在自动装配的类也将被导入(* 如果它在不同的Java包中 *)。你不需要创建一个示例。换句话说,您不必使用'new'关键字-Spring框架将为您做这件事。(nice right?
但话虽如此,Spring框架中还有一个@Import注解,用于导入Spring Configuration类。我猜这就是混乱的起源。

相关问题