我有一个 CDI 生产者方法 - 根据与此示例无关的某些条件 - 创建不同类型的对象:
public class TestProducer {
@Produces @TestQualifier
public Object create(InjectionPoint ip) {
if(something) {
return "a String";
} else {
return Integer.valueOf(42);
}
}
但是在使用这个生产者时,我总是在以下情况下得到一个错误:
@Named("test")
public class TestComponent {
...
@Inject public void setA(@TestQualifier String stringValue) {
...
@Inject public void setB(@TestQualifier Integer integerValue) {
它仅在生产者的 create 方法在方法签名中具有预期类型时才有效:
public class TestProducer {
@Produces @SpringBean
public String create(InjectionPoint ip) {
现在 String get 已正确注入,但我无法从生产者方法中生成一个整数。但这正是我想要避免的,因为生产者本身应该是完全通用的。
我做错了什么还是没有办法实现我想要的行为?