注射通用类型时CDI的问题:wildfly 8.2.0. -final



我们由于CDI的变化而面临widfly的怪异注入问题。我们有界面

public interface Command<I, O> {
}

和许多类实现此界面

public class ApproveUserRequests implements Command<ApproveUserRequestsRequest, List<String>> {
}

应用程序侦听器类喜欢获取可用的所有类的列表,并使用注入

@Inject
private Instance<Command<I, O>> mActions;

然而,由mactions返回的实例始终为null。在调试后发现,获取所有实例列表的唯一方法是使用

@Inject
private Instance<Command<?, ?>> mActions;

同时,我们在使用通用类型的同时面临着注射问题,但是使用通配符类型有助于我们。 - 请参见更多信息:https://developer.jboss.org/thread/256783#sthash.1s6tuxsr.dpuf

在CDI 1.2中已经阐明了参数化类型的规则。请查看第5.2.4节规格的原始和参数化类型的分配性。

最新更新