CDI Dependencia ambigua con @Produces: ¿por qué?
Estoy usando un código como el siguiente:
public Configuration {
private boolean isBatmanCar = someMethod(...);
@Produces
public Car getCar(@New Car car) {
if(isBatmanCar) {
car.setName("BatmanCar");
}
return car;
}
}
public Car {
private String name = "NormalCar";
public void setName(String name) {
this.name = name;
}
}
public Demo {
@Inject
Car car;
// rest of code
}
Cuando despliegue una aplicación para glassfish (Java EE 6 por cierto) obtengo
AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between (...) Car with qualifiers [@Any @Default] (...) Producer Method [Car] with qualifiers [@Any @Default]
Sé que cuando agrego@Alternative
a Car class funcionará, pero me pregunto si esta es la forma correcta de hacerlo, y ¿por qué tengo que hacerlo?
¿Me puede decir cuál es el uso correcto de @Produces en tal caso?
Estoy usando Java EE 6, CDI 1.0, EJB 3.1, Glassfish 3.2