【问题标题】:How does spring dependency injection work? [closed]spring 依赖注入是如何工作的? [关闭]
【发布时间】:2018-06-27 09:56:01
【问题描述】:

我想知道依赖项何时注入到 spring bean 中。 我有以下代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class TestClass {

    @Autowired
    Environment env;

    // throws Null Pointer Here.
    String prop = env.getProperty("some.property");

    public void test() {
        // works here
        String prop = env.getProperty("some.property");
    }
}

当我尝试获取环境变量时,为什么 spring 会抛出 NPE。 调用类构造函数时会发生什么? spring 是否仅在构建时在上下文中查找 bean 可用性,而不是在那时和那里注入它?请解释 bean 创建的完整流程。是否仅在构造对象并将其添加到上下文后才注入依赖项? spring 是仅在创建类的实例之后才查找依赖关系,还是在调用构造函数时才查找依赖关系?

【问题讨论】:

  • 您是否尝试过先阅读任何文档?还是春天在行动?

标签: java spring


【解决方案1】:

我建议您自己阅读有关 bean 生命周期的内容。互联网上有很多漂亮的图表,但是.. 让我帮你处理这个 NPE。 您要做的是在注入完成之前设置属性。 Spring 首先进行对象的实例化,然后填充字段,然后进行注入。所以...在初始化 env 字段之前,您的代码首先创建字段(并尝试使用 env 字段设置它们)。 方法 test() 在类对象完全创建后调用,因此 env 字段已正确准备好使用。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 2014-01-09
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2015-06-15
    相关资源
    最近更新 更多