最近ブラックホール系のプロジェクトに飲み込まれているため、
あまり饒舌にはなれないですが、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はそろそろ安定
させたいものです。何をいってもやっぱり動くもの出してかないと
だめですしね、
力尽きたので、今日はこれまで。おやすみなさい。
あまり饒舌にはなれないですが、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はそろそろ安定
させたいものです。何をいってもやっぱり動くもの出してかないと
だめですしね、
力尽きたので、今日はこれまで。おやすみなさい。