でぺんでんしー
public class GetTest { public static void main(String[] args) { SampleComponent obj = Freja.get(SampleComponent.class); obj.helloworld(); } } public interface SampleComponent { public void helloworld(); } @Component public class SampleComponentImpl implements SampleComponent { public void helloworld() { System.out.println("[[HELLO WORLD]]"); } }
さくっとここまで作ることができた。やっぱり難しいのは ClassLoader まわりだねえ。HotSwap まで視野に入れると、色々と制約が多いようにも思えるし。
個人的には、Component を生成するための Factory インスタンスをコンテナに追加できれば便利かなって思ったんだけど、HotSwap させるためには Factory はインスタンスじゃなくてクラスだったほうが便利だし、強引にインスタンスにするなら「ClassLoader その1で生成した Factory インスタンスを ClassLoader その2で clone」 なんて凄まじいことしなければいけないし……。
Factory は諦めかなぁ……。