1

私はしばらくの間、私の IOC として春を使用しています。また、Bean にプロパティを注入する非常に優れた方法もあります。

現在、私は IOC がGuiceである新しいプロジェクトに参加しています。Guice を使用して Bean にプロパティを挿入する方法の概念を完全には理解していません。

質問: 生のプロパティ ( string 、 ints ) を私の guice Bean に注入することは実際に可能ですか? 答えが「いいえ」の場合は、Java 用の優れた Properties Framework を知っているかもしれません。現時点では、アプリでの単純なプロパティ管理にResourceBundleクラスを使用したかったからです。しかし、しばらく春を使用した後、これは私にとって真剣に十分ではないようです。

4

3 に答える 3

2

このSO投稿では、さまざまな構成フレームワークの使用と、プロパティの使用について説明しています。それがあなたのニーズにぴったり合っているかどうかはわかりませんが、おそらくそこに価値のあるものを見つけることができます。

于 2010-04-12T10:49:47.560 に答える
2

Spring は、XML ファイルにある構成情報の注入を提供します。私のソフトウェアをインストールする人が XML ファイルを編集する必要がないようにしたいので、構成情報 (パス情報など) をプレーン テキスト ファイルでより適切に扱うために、java.util.Properties を使用することに戻りました。ファイル自体のパスフリーの場所を許可するClassPathResourceを使用すると、使いやすく、Springに非常によく適合するため(クラスパスにある必要があります。私はWEB-INF/classesのルートに配置します) .

設定された Properties オブジェクトを返す簡単なメソッドを次に示します。

/**
 *  Load the Properties based on the property file specified 
 *  by <tt>filename</tt>, which must exist on the classpath
 *  (e.g., "myapp-config.properties").
 */
public Properties loadPropertiesFromClassPath( String filename )
        throws IOException
{
    Properties properties = new Properties();
    if ( filename != null ) {
        Resource rsrc = new ClassPathResource(filename);
        log.info("loading properties from filename " + rsrc.getFilename() ); 
        InputStream in = rsrc.getInputStream();
        log.info( properties.size() + " properties prior to load" ); 
        properties.load(in);
        log.info( properties.size() + " properties after load" );         
    }
    return properties;
}

ファイル自体は通常の「name=value」のプレーンテキスト形式を使用しますが、Properties の XML 形式を使用する場合は、単に properties.load(InputStream) を properties.loadFromXML(InputStream) に変更します。それが助けになることを願っています。

于 2010-04-13T11:37:48.230 に答える
1

Guice にプロパティを注入するのは簡単です。ただし、ファイルからいくつかのプロパティを読み取った後、Names.bindProperties(Binder,Properties)を使用してそれらをバインドします。次に、たとえば を使用してそれらを注入できます@Named("some.port") int port

于 2010-04-12T13:20:09.657 に答える