CDI生产者受益

时间:2017-02-23 12:34:53

标签: java cdi

我正在尝试将jsf2应用程序从managed beans转换为CDI

所以我正在学习并发现CDI的优势。这看起来很棒,但producer还有一些我不理解的东西。

关于CDI我读到其中一个优点是减少coupling。我做了一些接口实验,一些实现,@default@alternate@inject。它正在完成这项工作。在那种情况下,我可以看到耦合'减少'。

但是在实现日志记录的生产者时,我没有看到它。

现在我正在使用像

这样的东西
Logger log = LoggerFactory.getLogger(MyClass.class);

使用CDI,在创建生产者之后,我有

@Inject
Logger logger;

好吧,它更短但是Logger类仍然与例如log4j的。

因此,如果我想使用另一个记录器库,我仍然需要修改我的所有类。

有什么我不理解的吗?

1 个答案:

答案 0 :(得分:2)

你的想法并不坏,它确实有助于抽象出你使用的记录器。 但是,您可能需要使用日志适配器(如slf4j(https://www.slf4j.org/)或commons-logging),这将有助于您在不同的记录器实现(log4j等)之间进行选择,但保持相同的日志记录接口。

然后,您可以在CDI中保留一个可以随意自定义的生产者方法。