Jakarta ee 如何将CDIBean注入自定义实体类?

Jakarta ee 如何将CDIBean注入自定义实体类?,jakarta-ee,jboss,cdi,wildfly,Jakarta Ee,Jboss,Cdi,Wildfly,我们使用Cassandra(和DataStax驱动程序)存储实体。因此,我们有一个自定义实体服务,当它从Cassandra检索数据时,它会创建实体类的新实例 我还需要使用CDI将服务注入到我的实体类中。我该怎么做?当我简单地在@Inject注释中输入时,它永远不会被注入 public class Customer{ @Inject private Event<DeactivationEvent> events; private String uid;

我们使用Cassandra(和DataStax驱动程序)存储实体。因此,我们有一个自定义实体服务,当它从Cassandra检索数据时,它会创建实体类的新实例

我还需要使用CDI将服务注入到我的实体类中。我该怎么做?当我简单地在@Inject注释中输入时,它永远不会被注入

public class Customer{

    @Inject
    private Event<DeactivationEvent> events;

    private String uid;

    public void setUid(String uid){
        this.uid = uid;
    }

    public String getUid(){
        return this.uid;
    }

    public void deactivate(){

        events.fire( new DeactivationEvent() );

    }

}


public CassandraEntityService{

    public static Customer findCustomer(String uid){

        ...whatever lookup logic...
        Customer customer = new Customer();

        customer.setUid(..)
        customer.set...

        return customer;

    }

}
公共类客户{
@注入
私人活动;
私有字符串uid;
公共void setUid(字符串uid){
this.uid=uid;
}
公共字符串getUid(){
返回这个.uid;
}
公开作废{
events.fire(新的DeactivationEvent());
}
}
公共CassandraEntityService{
公共静态客户findCustomer(字符串uid){
…无论什么查找逻辑。。。
客户=新客户();
customer.setUid(…)
顾客,集合。。。
退货客户;
}
}

作为参考,我正在使用JBoss/Wildfly 8.1。

CassandraEntityService.findCustomer()中的直接问题是,
Customer
实例不是CDIBean,因为
findCustomer
直接调用构造函数

使用时可能会遇到问题,但我认为(a)您需要为
客户
使用producer方法,以及(b)
CassandraEntityService
本身需要是另一个bean,它
@Inject
客户
,而不是直接调用构造函数

然而,对于更一般的问题(当实体发生变化时触发事件)更好的解决方案可能是,在这种情况下,
Customer
可能不需要成为CDIBean