Seasar2でDIしてみた

Seasar2で明示的にDI(正規表現でクラス指定とかせずに)してみた。
大きく、以下の2種類の方法があるが、それぞれやってみた。

(SpringでのDIについては、日記「Spring DIおよびAOPをアノテーションで設定する - oknknicの日記」などを参照)

前提事項

DI対象のクラス
package ok.plugin.impl;

public class TestComponentImpl implements TestComponent{

    @Override
    public void init() {
        // 処理
    }

    @Override
    public void method1() {
        // 処理
    }
}
DIコンテナからの取得例
TestComponent testComponent = SingletonS2Container.getComponent("testComponent");
testComponent.method1();

diconファイルに記載する方法

対象ファイル:
src/main/resources/app.dicon(アプリケーションで使用するdiconファイルの基点となるファイル)
追記内容:

<components>
  <!-- いろいろ省略 -->

  <component name="testComponent" class="ok.plugin.impl.TestComponentImpl" instance="singleton">
    <initMethod name="init"></initMethod>
  </component>
</components>

※DIするクラスを差し替えたい場合は、"ok.plugin.impl.TestComponentImpl"の部分を変更すればOK。
 同じインタフェース(ok.plugin.TestComponent)を実装しているクラスなら、何にでも差し替え可能。

アノテーションで記載する方法

DI対象のクラスに下記のとおりアノテーションを追記する。

package ok.plugin.impl;

@Component(name = "testComponent", instance = InstanceType.SINGLETON)
public class TestComponentImpl implements TestComponent{

    @InitMethod
    @Override
    public void init() {
        // 処理
    }

    @Override
    public void method1() {
        // 処理
    }
}

※動作未確認。宿題事項。