2017-06-01 9 views
1

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 

答えて

1

をoverrideingことにより、自分のコードにeveyオブジェクトのインスタンス化を無効にする方法がある場合、私は疑問に思って必ずうん、あなたはInstrumentationを持つオブジェクトのインスタンスをキャッチすることができます。エージェントは、新しいオブジェクト命令のすべてのロードされたクラスのバイトコードをスキャンし、うまく実行するために必要なものをClassFileTransformerに登録する必要があります。

計装パッケージの使用例については、this tutorialを参照してください。