Próbuję użyć Weld-SE do wstrzyknięcia zależności w aplikacji Dropwizard. Mogę bootstrap spawać i wstrzyknąć w klasie Application tak:Używanie Weld with Dropwizard
public class App extends Application<AppConfig> {
@Inject NameService service;
@Inject RestResource resource;
public static void main(String[] args) throws Exception {
Weld weld = new Weld();
WeldContainer container = weld.initialize();
App app = container.instance().select(App.class).get();
app.run(args);
weld.shutdown();
}
}
Pisałem metodę producentów w osobnej klasy dla RestResource i to jest również wstrzykiwany w porządku. Jednak w klasie zasobów usługa nie jest wstrzykiwana:
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public class RestResource {
@Inject NameService service;
@GET
public String test() {
return service.getName();
}
}
Tutaj usługa jest zawsze pusta. Czy ktoś wie jak to zrobić?
Co pojemnik używasz? – siva636
Brak pojemnika. Dropwizard to java se, buduje słoik ze wszystkimi usługami (pomost, koszulka itp. Są tam domyślnie) osadzone. Co próbuję zrobić, to spoina-se jako jedna z tych. –