2013-10-11 4 views
1

Я не могу найти правильный способ для инъекции объектов в ресурс джерси.Индивидуальные инъекции в черном

Я определил этот провайдер:

@Provider 
public class UpsellPaymentProvider implements InjectableProvider<Context, UpsellPaymentService>{ 

    private final Log log = LogFactory.getLog(getClass()); 

    public UpsellPaymentProvider(){ 
     log.info("Provider is instanced"); 
    } 

    @Override 
    public ComponentScope getScope() { 
     return ComponentScope.PerRequest; 
    } 

    @Override 
    public Injectable<UpsellPaymentService> getInjectable(ComponentContext paramComponentContext, 
      Context paramA, UpsellPaymentService paramC) { 
     log.info("Injecting UpsellPaymentService"); 
     return new AbstractHttpContextInjectable<UpsellPaymentService>() { 
      @Override 
      public UpsellPaymentService getValue(HttpContext arg0) { 
       return new UpsellPaymentService(); 
      } 
     }; 
    } 

} 

Как вы можете видеть в следующем коде, у меня есть upsellPaymentService, которые должны быть предоставлены UpsellPaymentProvider:

@Path("/rest/payment/upsell") 
public class UpsellResource { 

    private final Log log = LogFactory.getLog(getClass()); 
    @Context // Inject here 
    private UpsellPaymentService upsellPaymentService; 

    @POST 
    @Path("/first") 
    @Produces(MediaType.TEXT_PLAIN) 
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    public Response first(@InjectParam UpsellDto dto, Form allParams){ 
     // code here 
    } 

} 

Когда я запустить тест, Я вижу, что поставщик и ресурс обнаружены, но кажется, что поставщик не вводит:

ИНФО: Сканирование для корневых ресурсов и провайдеров классов в пакетах: example.ws.resources example.ws.providers

11-октября-2013 13:19:34 com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO : классы корневых ресурсов найдено: класс example.ws.resources.UpsellResource

11-октября-2013 13:19:34 com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: классы Provider найдено: класс example.ws.providers.UpsellPaymentProvider

... Не важно журналы ...

2013-10-11 13: 19:. 35092 INFO example.ws.providers.UpsellPaymentProvider (29) ---> провайдер инстанс

11-окт-2013 13:19:36 ком. sun.jersey.spi.inject.Errors processErrorMessages

МОГИЛА: следующие ошибки и предупреждения были обнаружены с ресурса и/или классов поставщика:

СИЛЬНЫЙ: Отсутствует зависимость для поля: частный example.ws. services.UpsellPaymentService example.ws.resources.UpsellResource.upsellPayme ntService

Любая идея для решения этой проблемы ?, спасибо.

ответ

0

решаемые, изменяя UpsellPaymentService (второй общий из InjectableProvider) по типу .

Смежные вопросы