自动装配与导入

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

    }

}

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


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


幕布斯6054654
浏览 117回答 2
2回答

慕侠2389804

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

长风秋雁

我相信你混淆了 Spring 和 Java 语言。Autowire与“代码注入”有关。(就像您描述的那样。)并且是 Spring 框架的一部分。但是,import(带有小写的 i)是 Java 语言的一部分。就像你说的,让其他代码可以在你添加它的类中使用。import无论您是否使用 Spring 框架,都将使用。这两个语句的目的完全不同,并且与其他语句一起使用。例如。您正在自动装配的类也将被导入(如果它在不同的 Java 包中)。但话虽如此,@ImportSpring 框架中还有一个注解用于导入 Spring Configuration 类。我猜这是混淆的起源。我强烈建议您完成 Java 课程的快速介绍。这将使您学习 Spring 更加愉快:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java