0

私が最も気に入っている Spring の機能の 1 つは、ファイルからロードされたプロパティを処理する方法です。以下のような Bean を設定するだけです。

<bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="/WEB-INF/app.properties" />
</bean> 

これで、app.properties からロードされたプロパティ値を、xml (以下を参照) またはアノテーションを使用して Bean に注入できるようになりました。

<bean class="com.example.PersonDaoImpl">
    <property name="maxResults" value="${results.max}"/>
</bean>

results.max はプロパティの 1 つです。

私はこの機能の大ファンです。アプリを再デプロイすることなく、1 つのプロパティを変更するだけで一部の機能をオン/オフできる非常に柔軟なアプリケーションを作成できるからです。

現在、JBoss Seam を使用していますが、このフレームワークを使用して同様のことを行う方法を見つけるのに苦労しています。

誰もそれを行う方法を知っていますか? そうでない場合、Seam を使用して適切な方法でプロパティを処理する方法を知っている人はいますか (私はいくつかの方法を見てきましたが、どれも十分ではありませんでした)。

ありがとう。

4

1 に答える 1

0

ソフトウェアスタックを使用する適切な方法がない場合(依存性注入は本当にありません!?)。私は言うでしょう:Google Guiceを使用してくださいhttps://code.google.com/p/google-guice/、https://code.google.com/p/google-guice/wiki/Motivation?tm=6) !!

Guiceの悪い点:それがどのように機能するか、そしてそれを使って何ができるかを理解するには、たくさん読む必要があるかもしれません。Propertiesただし、実行後は、必要な場所にオブジェクトを挿入するだけです。

class YourClass {
  @Inject Properties myProperties;

  @Inject
  public YourClass() { ... }

  public void someMethod() {
    use the property
  }
}

または、コンストラクター内のプロパティが必要な場合は、次のこともできます。

class YourClass {
  final Properties myProperties;

  @Inject
  public YourClass(Properties myProperties) { 
    this.myProperties = myProperties;
  }

  public void someMethod() {
    use the property
  }
}

Guiceを使用すると、アプリ全体をリファクタリングする必要が生じる場合があります。

ただし、すでにDIフレームワークがある場合は、それを使用する必要があります:)

于 2013-03-01T02:19:11.903 に答える