如何将属性文件中的值注入字段?

时间:2019-09-04 13:56:24

标签: java spring spring-boot

我上了一堂课

public class MyResources {

    @Value("${my.value}") // value always is null!!!
    private String PATH_TO_FONTS_FOLDER;
}

我有一个属性文件:

my.value=/tmp/path

和我的配置类:

@Configuration
public class MyBeanConfig {
    @Bean
    public MyResources myResources() throws Exception 
    {
        return new MyResources();
    }
}

如何将属性文件中的属性注入到此类字段中?

2 个答案:

答案 0 :(得分:2)

您必须用MyResources注释标记@Component,Spring才能管理该bean。

这将完成工作:

@Component
public class MyResources {

    @Value("${my.value}") // value always is null!!!
    private String PATH_TO_FONTS_FOLDER;
}

答案 1 :(得分:1)

一种方法是将@Value("${my.value}")移至MyBeanConfig,并向MyResources添加一个接受该值的构造函数。例如:

@Configuration
public class MyBeanConfig {
    @Value("${my.value}")
    private String PATH_TO_FONTS_FOLDER;

    @Bean
        public MyResources myResources() throws Exception {
        return new MyResources(PATH_TO_FONTS_FOLDER);
    }
}

但是根据示例,不需要MyBeanConfig。只需将MyResources标记为@Component(或其他适当的标记),以允许Spring管理实例的创建。如果Spring创建了实例(而不是使用示例中的new),则将注入@Value。