74

以前に他のプロジェクトでこれを機能させたことがあります。同じことをやり直していますが、何らかの理由で機能していません。Spring@Valueはプロパティ ファイルから読み取っていませんが、代わりに文字通り値を取得しています。

AppConfig.java

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

    public String getValue()
    {
        return value;
    }
}

applicationContext.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}

プロパティ ファイル内の値に解決されません。

考え?

4

11 に答える 11

1

pedjaradenkovic のコメントを読んでください。

彼が提供するリンクに加えて、これが機能しない理由は、@Value処理に ではPropertySourcesPlaceholderConfigurerなく が必要だからPropertyPlaceholderConfigurerです。

于 2013-04-10T22:33:51.547 に答える
0

application.propertiesコードベース全体に複数のファイルがある場合は、プロジェクトのプロパティ ファイルに値を追加してみてください。

プロジェクトのファイルをチェックしてpom.xml、現在のプロジェクトの親プロジェクトが何であるかを特定できます。

environment.getProperty()または、代わりに を使用してみてください@Value

于 2020-04-27T15:57:44.477 に答える