Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在弹簧中注入自动接线值时_Spring_Annotations_Inversion Of Control_Code Injection_Autowired - Fatal编程技术网

Spring 在弹簧中注入自动接线值时

Spring 在弹簧中注入自动接线值时,spring,annotations,inversion-of-control,code-injection,autowired,Spring,Annotations,Inversion Of Control,Code Injection,Autowired,有人知道自动连线字段(如果与通过构造函数或set方法没有区别的话)的值何时准确地注入到使用它的类中吗 例如,我尝试注入值serverProperties。正如我所发现的,在我尝试使用该字段设置类字段ROOT_目录的初始值时,该字段还没有得到注入的值,其中serverProperties抛出空指针异常。注射什么时候发生?在初始化所有类字段之后?提前谢谢 PS:保持bean是一个带注释的控制器 @Autowired @Qualifier("serverProperties") private Pro

有人知道自动连线字段(如果与通过构造函数或set方法没有区别的话)的值何时准确地注入到使用它的类中吗

例如,我尝试注入值serverProperties。正如我所发现的,在我尝试使用该字段设置类字段ROOT_目录的初始值时,该字段还没有得到注入的值,其中serverProperties抛出空指针异常。注射什么时候发生?在初始化所有类字段之后?提前谢谢

PS:保持bean是一个带注释的控制器

@Autowired
@Qualifier("serverProperties")
private Properties serverProperties;

private final String ROOT_DIRECTORY = serverProperties.getProperty("root.path");
豆子是

  • 创建(使用构造函数、工厂方法等)
  • 注入依赖项(设置了
    @Autowired
    属性)
  • 被称为
  • 在第三步中,您需要设置
    根目录
    ,而不仅仅是在类主体中定义它。所以你的代码应该是

    @Autowired
    @Qualifier("serverProperties")
    private Properties serverProperties;
    
    private String ROOT_DIRECTORY;
    
    public void init() {
        ROOT_DIRECTORY = serverProperties.getProperty("root.path");
    }
    
    您的bean应该有一个定义的
    init
    方法,如

    <bean id="exampleInitBean" class="examples.ExampleBean" init-method="init"/>
    
    
    
    如果您使用的是注释,那么可以使用@PostConstruct

    谢谢,我的bean实际上是一个带注释的控制器,这意味着我不能使用init method=“init”。另一种选择?我想我已经找到了@PostConstruct public void init(){/…}