Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
纯java配置的Spring3.2@value注释不起作用,但Environment.getProperty起作用_Java_Spring - Fatal编程技术网

纯java配置的Spring3.2@value注释不起作用,但Environment.getProperty起作用

纯java配置的Spring3.2@value注释不起作用,但Environment.getProperty起作用,java,spring,Java,Spring,这件事让我伤了脑筋。不知道我错过了什么。我无法在纯java配置的spring应用程序(非web)中使用@Value注释 属性文件只包含my.prop=avaluebean如下所示: public class MyBean { String name; public void print() { System.out.println("Name: " + name); } public String getName() { retur

这件事让我伤了脑筋。不知道我错过了什么。我无法在纯java配置的spring应用程序(非web)中使用
@Value
注释

属性文件只包含
my.prop=avalue
bean如下所示:

public class MyBean {
    String name;
    public void print() {
        System.out.println("Name: " + name);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
环境变量正确打印值,而
@value
不正确。
avalue

Name:${my.prop}

主类只是初始化上下文

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
但是如果我使用

@ImportResource("classpath:property-config.xml")
用这个片段

<context:property-placeholder location="app.properties" />


那么它工作得很好。当然,现在环境返回
null
Config
类中添加以下bean声明

@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}
为了使
@Value
注释正常工作,应注册
属性资源占位符配置器。在XML中使用
时会自动完成,但在使用
@Configuration
时应注册为
静态@Bean


请参阅文档和此Spring框架。

这非常有效!spring doc@配置忽略了这一点。导致所有这些混乱+1-令人尴尬的是,我在开始一个新项目时似乎总是忘记这一点,每次我都会找到这个答案。将bean注册为“静态”是我的关键。谢谢,我没用。
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}