[Seasar-user:20826] Re: s2configで環境による設定の切り替えがうまくできない

Ryo Iwama [E-MAIL ADDRESS DELETED]
2011年 6月 27日 (月) 03:55:05 JST


田平さん

いわまです、遅くなってしまって申し訳ありません。
ぼくがド忘れしていただけで、対応方法はかなり単純でしたOTZ

envで上書きしたときに、上書きされた値を取得したい場合は
getConfigValueではなくfindAllConfigValueを利用する必要があります。

コンフィグクラスを下記のように修正すると上手く行くと思います。

== コンフィグクラス

public class HogeConfig {

  @Resource
  private ConfigContainer configContainer;

  /**
   * fooの値。
   *
   * @return fooの値
   */
  public String getBarServiceAreacdFoo() {
      String val = configContainer.findAllConfigValue(String.class,
"barService.areacd.foo");
      if (val == null) {
          throw new InvalidPropertyRuntimeException(
              "設定ファイル hoge.properties : barService.areacd.foo の読み込みに失
敗");

      }
      return val;
  }
}

2011年6月24日8:10 田平康雄 <[E-MAIL ADDRESS DELETED]>:
> 了解です。
> よろしくお願い致します。
>
> --
> 田平康雄
>
> On 2011/06/21, at 13:26, Ryo Iwama <[E-MAIL ADDRESS DELETED]> wrote:
>
>> こんにちは
>>
>> 岩間(happy_ryo)です。
>>
>> 反応が遅くて申し訳無いです。
>> 繁忙期故、確認する時間が取れないで居ます
>> 週末には確認できると思うのですが
>> それまでお待ちいただけますでしょうか?
>>
>> 2011年6月17日18:58 Yasuo Tabira <[E-MAIL ADDRESS DELETED]>:
>>> 田平と申します。
>>>
>>> S2Configを使用して環境によって設定を切り替えようとしていますが、うまく行きません。
>>> Seasar2徹底入門の通りやっているつもりなのですが、切り替え用の設定ファイルの値が反映されないです。
>>>
>>> 設定ファイルを以下のように作成し、env=utを記述しています。
>>> これでhoge_ut.propertiesの値(99999)が参照されるのを期待しているのですが27720が返ってきます。
>>>
>>> == hoge.properties
>>> env=ut
>>> barService.areacd.foo=27720
>>>
>>> == hoge_ut.properties
>>> barService.areacd.foo=99999
>>>
>>> どなたか原因がわかる方がいらっしゃいましたらご教授願えませんでしょうか。
>>> よろしくお願いいたします。
>>>
>>> ■環境
>>> s2-frameworkのバージョンは2.4.43です。
>>> s2-extensionのバージョンは2.4.43です。
>>> s2-tigerのバージョンは2.4.43です。
>>> s2config-coreのバージョンは1.0.3です。
>>> s2config-extensionのバージョンは1.0.3です。
>>>
>>> ■設定ファイル
>>>
>>> == ConfigCustomize.dicon
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
>>>  "http://www.seasar.org/dtd/components24.dtd">
>>> <components>
>>>  <!-- コンフィグの読み書きの実装を指定します -->
>>>  <component
>>> class="org.seasar.config.core.config.impl.ConfigPropertiesWriter"
>>> instance="prototype"/>
>>>  <component
>>> class="org.seasar.config.core.config.impl.ConfigPropertiesReader"
>>> instance="prototype"/>
>>> </components>
>>>
>>>
>>>
>>> == creator.dicon
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
>>>  "http://www.seasar.org/dtd/components24.dtd">
>>> <components>
>>>  <include path="convention.dicon"/>
>>>  <include path="customizer.dicon"/>
>>>  <component class="org.seasar.framework.container.creator.ActionCreator"/>
>>>  <component class="org.seasar.struts.creator.FormCreator"/>
>>>  <component class="org.seasar.framework.container.creator.ServiceCreator"/>
>>>  <component class="org.seasar.framework.container.creator.DtoCreator"/>
>>>  <component
>>> class="org.seasar.framework.container.creator.InterceptorCreator"/>
>>>  <component class="org.seasar.framework.container.creator.DaoCreator"/>
>>>  <component class="org.seasar.config.core.creator.ConfigCreator"/>
>>>  <component class="org.seasar.s2csv.creator.CsvCreator"/>
>>>  <component class="org.seasar.chronos.core.creator.TaskCreator"/>
>>>  <component class="org.seasar.chronos.core.creator.TriggerCreator"/>
>>>  <component name="logicCreator"
>>> class="org.seasar.framework.container.creator.LogicCreator"/>
>>>  <component class="org.seasar.config.core.creator.ConfigCreator"/>
>>> </components>
>>>
>>>
>>>
>>> == config.dicon
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
>>>  "http://www.seasar.org/dtd/components24.dtd">
>>> <components>
>>>  <include path="s2config-core.dicon"/>
>>>  <component
>>>      name="configContainer"
>>>      class="org.seasar.config.core.container.impl.StrictConfigContainer">
>>>      <arg>
>>>          <component
>>> class="org.seasar.config.core.container.impl.ConfigContainerImpl"
>>> autoBinding="none"/>
>>>      </arg>
>>>      <property name="configName">"hoge"</property>
>>>      <initMethod name="loadToBeans"/>
>>>  </component>
>>> </components>
>>>
>>>
>>> == コンフィグクラス
>>>
>>> public class HogeConfig {
>>>
>>>  @Resource
>>>  private ConfigContainer configContainer;
>>>
>>>  /**
>>>   * fooの値。
>>>   *
>>>   * @return fooの値
>>>   */
>>>  public String getBarServiceAreacdFoo() {
>>>      String val = configContainer.getConfigValue(String.class,
>>> "barService.areacd.foo");
>>>      if (val == null) {
>>>          throw new InvalidPropertyRuntimeException(
>>>              "設定ファイル hoge.properties : barService.areacd.foo の読み込みに失
>>> 敗");
>>>
>>>      }
>>>      return val;
>>>  }
>>> }
>>>
>>>
>>> --
>>> 田平康雄
>>> [E-MAIL ADDRESS DELETED]
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>
>>
>>
>> --
>> //////////////////////////////////////////////////////////////////////////////////////////////////////////
>>
>> java-ja
>> ja.netbeans.org
>>
>> 岩間 亮 <Ryo Iwama>
>> (id:happy_ryo)
>>
>> blog:http://d.hatena.ne.jp/happy_ryo/
>>
>> 参加プロジェクト
>>
>> NetBeans日本語コミュニティ:http://wiki.netbeans.org/JaNetBeans
>> Jiemamy(データベースリファクタリング):http://www.jiemamy.org/
>> S2Config(設定情報管理):http://s2config.sandbox.seasar.org/
>> Fisshplate(Excelテンプレート):http://fisshplate.sandbox.seasar.org/
>>
>> //////////////////////////////////////////////////////////////////////////////////////////////////////////
>



-- 
//////////////////////////////////////////////////////////////////////////////////////////////////////////

java-ja
ja.netbeans.org

岩間 亮 <Ryo Iwama>
(id:happy_ryo)

blog:http://d.hatena.ne.jp/happy_ryo/

参加プロジェクト

NetBeans日本語コミュニティ:http://wiki.netbeans.org/JaNetBeans
Jiemamy(データベースリファクタリング):http://www.jiemamy.org/
S2Config(設定情報管理):http://s2config.sandbox.seasar.org/
Fisshplate(Excelテンプレート):http://fisshplate.sandbox.seasar.org/

//////////////////////////////////////////////////////////////////////////////////////////////////////////


Seasar-user メーリングリストの案内