以前、JavaSEでもCDIを使ってみたい!と思ったのですが、以前は探し方が悪かったのか情報を見つけ出すことができませんでした。
が、昨日ちょっと検索したらちょっと情報があり、無事実装できたのでメモします。
コンテナの実装
CDIとはこちらのエントリーでも書きましたが、コンテナが必要です。
そのコンテナを登録し、そのうえで走らせればOkです。
Weld
使うコンテナはWeldといわれるライブラリです。
ダウンロード
mavenで管理して、pomに以下の記述をすればOkです。
1 2 3 4 5 |
<dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-se</artifactId> <version>1.0.1-Final</version> </dependency> |
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package com.superscraping.app; import javax.inject.Inject; import org.jboss.weld.environment.se.Weld; import org.jboss.weld.environment.se.WeldContainer; /** * * @author Norio */ public class Controller { @Inject private SampleClass sampleClass; public static void main(String[] args) { //Weldのコンテナを起動 Weld weld = new Weld(); WeldContainer container = weld.initialize(); Controller controller = container.instance().select(Controller.class).get(); controller.start(); weld.shutdown(); } public Controller() { } public void start() { //無事実行される sampleClass.・・・ } } |
これで無事に注入されます。