如何在Java

时间:2017-06-01 13:35:19

标签: java cdi instantiation

我正在构建一个严重依赖于JaxB和Weld的Java SE应用程序,两者设计完全不同,本质上是不兼容的。为了说明,解组后,下面的记录器将为空。

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

使用UnmarshallListener我正在使用BeanManager对现有的Object实例进行Weld注入。

我真的在程序中的所有对象上使用CDI。我可以使用工厂方法在任何实例上执行相同的注入,但这需要(大量)重构。

我想知道是否有任何方法可以通过覆盖

覆盖我的代码中的evey对象的实例化
Object o = new Object(); // Catch this event and perform CDI

1 个答案:

答案 0 :(得分:1)

是的,您可以使用Instrumentation捕获对象实例。代理需要注册一个ClassFileTransformer,它将扫描所有已加载类的字节码以获取新对象指令,并且做得好......你需要它做什么。

查看this tutorial以获取有关如何使用检测包的示例。