Java 通过CDI注入记录器,一种反模式?
查看此代码:Java 通过CDI注入记录器,一种反模式?,java,design-patterns,ejb,instance,cdi,Java,Design Patterns,Ejb,Instance,Cdi,查看此代码: @Stateless public class AStatelessEJB { @Inject private Logger logger; (...) 为什么一个记录器(通常是最终的和静态的)被CDI注入一个无状态EJB(作为一个实例变量) 有什么优势吗?或者仅仅是缺点,例如: CDI查找的开销(每个bean初始化) CDI初始化的开销(每个bean初始化) CDI注入的开销(每个bean初始化) 垃圾收集器清理的开销(每次bean被销毁时) 如果您从性能角度对其进行评估
@Stateless
public class AStatelessEJB {
@Inject
private Logger logger;
(...)
为什么一个记录器(通常是最终的和静态的)被CDI注入一个无状态EJB(作为一个实例变量)
有什么优势吗?或者仅仅是缺点,例如:
- CDI查找的开销(每个bean初始化)
- CDI初始化的开销(每个bean初始化)
- CDI注入的开销(每个bean初始化)
- 垃圾收集器清理的开销(每次bean被销毁时)
- 易于从通用日志框架中提供抽象
- 易于添加对国际化和本地化等附加功能的支持
- 易于使用(简单如使用注释)
- 易于管理多个实现/配置(简单如使用多个限定符)
- 标准化使用(与其他字段一样)
- 额外的最低处理成本
- 其他工具(如Lombok)提供了易用性,并提供了注释配置(在编译时和静态方式)
- 日志通常不需要其他功能(如国际化/本地化)