CDI'da çok basit bir noktaya ulaşamıyorum!CDI ile enjeksiyon arabirimi uygulaması
benim uygulamada bu sınıflara sahip:
public class CarrelloController extends AbstractController {
@Inject CarrelloService carrelloService;
...
}
@Stateless
public class CarrelloService implements CarrelloDataProvider {
...
}
public interface CarrelloDataProvider {
public Oggetto getSomething(String foo);
}
Ancak, kurulumundan hemen sonra aşağıdaki hatayı alıyorum:
org.jboss.weld.exceptions.DeploymentException: KAYNAK 001408 : Niteleyicilerle birlikte CarrelloService türü için bağımlı olmayan bağımlılıklar @ Enjeksiyon noktasında boş bırakma [BackedAnnotatedField] @Inject @Default it.footballove.web.controller.CarrelloController.carrelloService at it.footballove.web.controller.CarrelloController.carrelloService (CarrelloController.java:0) org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems (Validator.java:359) org.jboss en de
. org.jboss.weld.bootstrap.Validator.validateRIBean de weld.bootstrap.Validator.validateInjectionPoint org.jboss.weld.bootstrap.Validator.validateGeneralBean (Validator.java:134) 'den (Validator.java:281) (Validator.java:155) org.jboss.weld.bootstrap.Validator.validateBean (Validator.java:518) org.jboss.weld.b adresinden de org.jboss.weld.bootstrap.ConcurrentValidator $ 1.doWork (ConcurrentValidator.java:66) de ootstrap.ConcurrentValidator $ 1.doWork (ConcurrentValidator.java:68) org.jboss.weld.executor.IterativeWorkerTaskFactory $ 1.call java de java.util.concurrent.FutureTask.run de org.jboss.weld.executor.IterativeWorkerTaskFactory $ 1.call (IterativeWorkerTaskFactory.java:53) 'den (IterativeWorkerTaskFactory.java:60) (FutureTask.java:266) .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) adresinde yer alan java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) java.lang.Thread.run (Thread.java: 745) İstisna 0:
Sadece bir arabirim kullanarak anladım. Soyut sınıf yerine hiçbir sorun çıkarmaz!
Neden?
Ne demek istediğimi anlamıyorum _Bunu sadece bir arabirim kullanarak elde ediyorum. Soyut sınıf yerine sorun çıkarmaz! _. Gönderdiğiniz kod, enjeksiyon noktasının türünün "CarrelloService" sınıfı olduğunu ve "CarrelloDataProvider" arayüzünü göstermediğini gösterir. Neden böyle yapıyorsun? –
Çünkü bu durumda, bu somut uygulamaya ihtiyacım olduğunu biliyorum. CarrelloDataProvider'ı soyut bir sınıf olarak tanımlar ve hizmeti genişletirseniz, hata alıyorum. –