我有一个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) {
只有当生产者的创建方法在方法签名中具有期望的类型时,它才起作用:
public class TestProducer {
@Produces @SpringBean
public String create(InjectionPoint ip) {
现在字符串已经正确注入,但我没有办法从生产者方法中生成一个整数。但这正是我想要避免的,因为生产者本身应该是完全通用的。
我做错了什么还是没有办法实现我想要的行为?