2017-06-01 28 views
1

我正在構建嚴重依賴於JaxB和Weld的Java SE應用程序,這兩個設計非常不同的內在不兼容。爲了說明,解組後,下面的記錄器將爲空。如何在Java中偵聽對象實例化事件

@XmlRootElement(name="root") 
public class MyObject { 
    @Inject 
    private Logger log; 
} 

使用一個UnmarshallListener我正在使用BeanManager現有對象實例做焊接注射。

真的,我在我的程序中的所有對象上使用CDI。我可以同樣使用工廠方法在任何實例上執行相同的注入,但這需要(很多)重構。

我想知道是否有任何方式與Instrumentation overrideing的

Object o = new Object(); // Catch this event and perform CDI 

回答

1

對沒錯,你可以捕捉的對象實例來覆蓋埃維對象的實例在我的代碼。代理程序需要註冊一個ClassFileTransformer,它將掃描所有加載的類的字節碼,以指示新對象,並且做得很好。您需要做什麼。

查看this tutorial瞭解如何使用檢測軟件包的示例。

相關問題