Spring以外のコードをSpring(v3.2)コードに変換中です。Springのドキュメントを読みましたが、以下に示す次の状況に頭を悩ませることができません。
クラスFooとBuzはSpringによって管理され、シングルトンです。クラスバーとMyHyperlinkListenerはSpringによって管理される必要があり、プロトタイプである必要があります(ただし、これらに正しく注釈を付ける方法はわかりません)。
BarはSpringによって管理されていないため、Bar内のBuzのインスタンスは現在nullです。これを可能にするために、これらのクラスにどのように正しく注釈を付けるのでしょうか?BarのFactoryクラスを作成する必要がありますか?それはどのようになりますか?
Barのコンストラクターには、Fooクラス内から「this」(別名JFrame)が渡されます。Springで「this」を処理するようにコードを変更する方法がわかりません。これはJFrameを受け入れる別のファクトリだと思いますが、それをコーディングする方法がわかりません。
@Named
public class Foo extends JFrame{
private Bar bar;
private void doSomeWork(int x){
bar = new Bar( new MyHyperlinkListener(this), x);
}
}
public class Bar extends JPanel{
@Inject
private Buz buz;
public Bar(MyHyperlinkListener mhl, int x){
}
}
public class MyHyperlinkListener implements HyperlinkListener{
private JFrame frame;
public MyHyperlinkListener(JFrame frame){
this.frame=frame;
}
//...code omitted
}
@Named
public class Buz{
}
@Configuration
public class MyConfiguration{
}
public class RunMe{
public static void main(String[] args){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("myPackage");
context.refresh();
context.registerShutdownHook();
Foo foo = context.getBean(Foo.class);
foo.setVisible(true);
}
}