かつのりの日記2

わんくまでは珍しいJavaを中心とした日記です

目次

Blog 利用状況

書庫

日記カテゴリ

いろいろリンク

リソースインジェクションとJMXに対応してみた

開発中のDIコンテナですが、リソースインジェクションとJMXに対応させました。

 

JMX対応はMBeanServerにコンテナとコンテナ内のコンポーネントを登録して、コンテナがどういう状態かを外部から監視する機能ですが、実際のところまだまだというところです。

  • コンポーネントの属性変更
  • コンポーネントの状態変更
  • コンポーネントの操作

というコンテナやコンポーネントをJMXで管理する機能と、

  • MBeanServerをコンポーネントとして登録する機能
  • MBeanServerのMBeanをコンポーネントとして登録する機能

もサポートしたいところ。ダイナミックMBeanは流石に難しいですが、POJOベースのMBeanなら登録できそうです。

 

そして目玉となるのがリソースインジェクション機能です。

リソースとはプロパティファイルやデータベース等の<キー> = <値>で表現されるものを示しますが、これらをコンテナに登録しておき、コンテナ内のコンポーネントにインジェクションできるようにする機能です。

例えばvoid setUserName(String name);というメソッドがある場合、コンテナ内のリソースからuser.nameで検索して、値があればインジェクションします。セッターメソッドの第一引数の型情報からプロパティエディタ(java.beans.PropertyEditor)を検出してからインジェクションするので、プロパティエディタが見つからない場合は何も行われません。独自のプロパティエディタを作成して登録する事もできますので、好きな文字列から好きなオブジェクトの生成も可能です。(ここら辺はSpringのApplicationContextからアイデアをいただきましたw)

例えばImageエディタを作成して、Swingのコンポーネントにインジェクションするというのも可能になりますね。プリミティブ型や一般的なAPIにある型を、インジェクションの為にコンテナに登録するのは面倒なので、こういうアプローチもありだと思います。

 

投稿日時 : 2007年9月11日 22:38

Feedback

No comments posted yet.
タイトル
名前
Url
コメント