JaxBとWeldに大きく依存するJava SEアプリケーションを構築していますが、これらの2つのアプリケーションは本質的に互換性がありません。例をあげると、アンマーシャリングの後、下のロガーはnullになります。私はBeanManager
を使用して、既存のオブジェクトのインスタンス上で溶接注射をしていますUnmarshallListener
を使用してJavaのオブジェクトインスタンス化イベントを聴く方法
@XmlRootElement(name="root")
public class MyObject {
@Inject
private Logger log;
}
。
本当に自分のプログラム内のすべてのオブジェクトでCDIを使用しています。ファクトリメソッドを使って同じインジェクションを同じように実行できますが、それは(多くの)リファクタリングを必要とします。
Object o = new Object(); // Catch this event and perform CDI