Spring @Value未解析为属性文件中的值

2022-08-31 12:35:43

我以前在其他一些项目中做过这项工作,我只是在做同样的事情,但由于某种原因它不起作用。Spring不是从属性文件中读取,而是从字面上获取值@Value

应用配置.java

@Component
public class AppConfig
{
    @Value("${key.value1}")
    private String value;

    public String getValue()
    {
        return value;
    }
}

应用上下文.xml:

<context:component-scan
    base-package="com.test.config" />
<context:annotation-config />

<bean id="appConfigProperties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:appconfig.properties" />
</bean>

appconfig.properties

key.value1=test value 1

在我的控制器中,我有:

@Autowired
private AppConfig appConfig;

应用程序启动刚刚好,但当我这样做

appConfig.getValue()

它返回

${key.value1}

它不会解析为属性文件中的值。

思潮?


答案 1

我还发现不起作用的原因是,需要而不是.我做了同样的更改,它对我有用,我正在使用春季4.0.3版本。我在我的配置文件中使用以下代码配置了这个 -@value@valuePropertySourcesPlaceholderConfigurerPropertyPlaceholderConfigurer

@Bean 
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}

答案 2

在我的情况下,静态字段不会被注入。


推荐