【问题标题】:java CDI injection how to annotate and modify third part classjava CDI注入如何注释和修改第三方类
【发布时间】:2021-06-26 04:15:29
【问题描述】:

我是 java CDI 的新手,我想知道如何在注入第三方类时对其进行注释。

例如,我想将jacksonObjectMapper注入到我的许多服务中,并且我想注册一些自定义的序列化器,我可以做的是编写一个方法并标记为@PostConstruct,但只有当我可以访问它的代码。我认为这种情况在注入一些第三方类时很常见,但想对它们进行一些定制。 java CDI 的常见做法是什么?

【问题讨论】:

    标签: java dependency-injection cdi


    【解决方案1】:

    写一个生产者。

    我经常使用它来创建这样的记录器:

    @ApplicationScoped
    public class LoggerProducer {
       @Produces
       public Logger getLogger(InjectionPoint ip) {
          // only include the injection point if you need it
          return LoggerFactory.getLogger(ip.getBean().getBeanClass().getSimpleName());
       }
    }
    
    ...
    
    @Inject
    private Logger logger;
    

    【讨论】:

    • 在上面的例子中,容器管理器是怎么知道要传入哪个ip参数的呢?我们是否也应该在注入的地方指定参数值?
    • @ZiqiLiu 注入点是描述注入发生位置的元对象。这是由容器管理器自动添加的。但是,如果您不需要任何这些信息,您可以简单地将这个参数排除在生产者之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多