N2 ToolBox(跡地)

跡地です。引っ越しました。http://d.hatena.ne.jp/nosen

環境に依存する設定について

2007-01-16 23:10:28 | オープンソース
最近ブラックホール系のプロジェクトに飲み込まれているため、
あまり饒舌にはなれないですが、hiro345さんのエントリ
少々コメントをば。

さすがに鋭いご指摘だと思います。
JavaでDIの設定を書こう、という場合、環境依存の情報をどうやって扱うか、
というのは解決しなければいけない問題です。
違うマシンにデプロイするたびにソースコードからビルドしなおす
ようなことは当然許されるはずはないですから。

いまのところ、環境に依存した情報はModuleのsetter経由で
渡すことを考えています。
例えば、コネクションプールなどの機能をもつデータソースを
コンポーネントとして提供するモジュールであれば、
以下のようなイメージになります。

--
DataSourceModule module = new DataSourceModule();
module.setDriverUrl(...);
module.setUser(...);
module.setPassword(...);
module.setMaxConnections(..);

DataSource ds = module.getInstance(DataSource.class)
--

setterに渡す値はそれこそXMLなりプロパティファイル
なりから適当にとってくればいいと思います。
外部ファイルから設定をとってくるには既存のライブラリが
いろいろ使えると思ってるので、いまのところLiQ Container自身が
その仕組を提供することは考えていません。
ただ、関連プロダクトとしてそういうものを作る可能性はあります。
Moduleは限りなく
ふつうのJavaオブジェクトなので、XMLバインディングツールを
使ってモジュールをインスタンス化することすらできるはずです。


環境に依存する情報は、DIの設定からは切り離して、別途設定し、
DIの設定はプログラマのみがいじるようにすべきだと
思っています。

繰り返しになりますが、私がJavaで設定を書くべき、といっているのは、
DIに関してだけです。とくに運用の人にJavaコードで設定書かせるなんて
ひどいことはさすがに考えてないです。。

ところで、問題はこのモジュールが提供するDataSourceをよそのモジュールの
コンポーネントにどうやってInjectするか、なのですが、よくある
「継承」とかとはちょっと違うアプローチを
思い付いたので、alpha2で公開すべくがんばって作業してます。

alpha2は1月中のリリースが目標です。さすがにAPIはそろそろ安定
させたいものです。何をいってもやっぱり動くもの出してかないと
だめですしね、

力尽きたので、今日はこれまで。おやすみなさい。

最新の画像もっと見る