aşağıda gibi kod kullanıyorum:CDI @ Produces ile belirsiz bağımlılık - neden?
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
}
ben biliyorum
AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between (...) Car with qualifiers [@Any @Default] (...) Producer Method [Car] with qualifiers [@Any @Default]
@Alternative
eklerken işe yarayacak, ama bunu yapmanın uygun yolu olup olmadığını merak ediyorum ve neden bunu yapmak zorundayım?
Bu durumda @ Produces'in doğru kullanımının ne olduğunu söyleyebilir misiniz?
Java EE 6, CDI 1.0, EJB 3.1, glassfish 3.2
@Alternative kullanımıyla ilgili iyi uygulama nedir? – dmydlarz
@Alternative, aynı fasülye (tip) için farklı bir sürüm önermenizi ve bir yapılandırma dosyasında yapılandırmayla etkinleştirmenizi sağlar. Dev/testte ve üretimde farklı bir ben'e sahip olmak için, örneğin, yalnızca fasulyeler.xml dosyasında değiştirmek için kullanılabilir. –