0

クラスにプロパティ ファイル (.properties) をロードしようとしています。別のスレッドの例に従っています:プロパティ ファイルから値を読み取る方法は? -しかし、それは私にとってはうまくいきません。

ここに私の簡単な実装があります:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


    <context:annotation-config />

    <!-- Load up properties -->
    <context:component-scan base-package="com.test"/>
    <context:property-placeholder location="file:///C:/dev/workspace/test-project/src/main/resources/appconfig.properties"/>
</beans>

TestConfig.java

@Component
public class TestConfig
{

    @Value("${test.key1}")
    private String key1;

    public String getKey1()
    {
        return key1;
    }

}

src/main/resources/appconfig.properties

test.key1=value
test.key2=value

Tomcat を起動すると、ログに次のように表示されます。

00:11:41,985 [localhost-startStop-1]  INFO PropertyPlaceholderConfigurer - Loading properties file from URL [file:/C:/dev/workspace/test-project/src/main/resources/appconfig.properties]

しかし、getKey1() を実行すると、「null」が返されます。

私は何が欠けていますか?

質問 2: 「クラスパス」を使用する場合:

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

それはどのディレクトリを参照していますか?WEB-INF/classes のルート?

4

2 に答える 2

0

これはばかげていた...

TestConfigオブジェクトを取得したとき、私は次のことを行っていました。

TestConfig config = new TestConfig();
config.getKey1();

もちろん、構成オブジェクトはまったく新しいオブジェクトであり、何もインスタンス化(または注入)されることはありません。

代わりに、Springフレームワークによって初期化されるように注入しています。

@Autowired
private TestConfig config;
于 2013-02-24T04:33:55.323 に答える