java - Autowiring 与导入

标签 java spring spring-boot

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

就像,当你编写 @Autowired 时,事情会分两遍发生,在第二遍中 spring 注入(inject) 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();
    }
}

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

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

最佳答案

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

此外,它们之间还有基本的区别,例如如果您想访问类中的静态变量,则不需要该类的实例。 (您可以通过类引用访问它们)在这种情况下,您不需要 Autowire,但需要 Import 语句。

但另一方面,如果您有兴趣体验 Spring 的强大功能,例如 Autowire 配置,并且可能会验证它们以及 Spring 提供的所有这些很酷的功能,那么您需要将您的类设为组件并根据需要进行 Autowire。

关于java - Autowiring 与导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219311/

相关文章:

java - 在哪里可以找到 JSFUnit 实际示例?

Java - 类实例化和访问的基础知识

java - Spring MVC @EnableWebMvc Bean 配置

spring-boot - QueryDSL 错误重复类

java - 如何在 Spring Boot 中加载和遍历属性文件

java - org.apache.hadoop.mapreduce 未找到 - Hadoop

java - 如何使用方法引用在构造函数中创建的数据类型(数组)

java - 将类转换为通用 bean 名称的 Spring 实用程序方法

java - spring启动bean的顺序是什么?

spring-boot - 带有 Spring 的 GraphQL-java - 解析器 vd datafetcher