I created a project.Resteasy ve Google Guice: @Injection ile çoklu @UygulamaPath ve kaynak nasıl kullanılır? Google Guice tarafından sunulan bağımlılık enjeksiyonunu Jax-rs kaynaklarımda Resteasy kullanarak test etmek için
Niyetim şunlardır: benim API sürümleri için
- Kullanım birden
@ApplicationPath
.@ApplicationPath
ile açıklanmış her sınıfta, belirli bir sürüm için bir grup sınıf yüklüyorum. - Her kaynağın, bazı hizmetleri enjekte etmesi için yapıcısında
@Inject
(Google Guice'den) var.ApplicationV1RS
veApplicationV2RS
:
Ben @ApplicationPath
ile açıklamalı iki ayrı sınıf yarattılar. Her ikisinde de sadece testlerim için aynı kaynak sınıflarını (UserResource
ve HelloResource
) ekledim.
My Modülü böyle yapılandırılır:
public class HelloModule implements Module
{
public void configure(final Binder binder)
{
binder.bind(IGreeterService.class).to(GreeterService.class);
binder.bind(IUserService.class).to(UserService.class);
}
}
Ben http://localhost:9095/v1/hello/world
veya http://localhost:9095/v2/hello/world
diyoruz
java.lang.RuntimeException: RESTEASY003190: Could not find constructor
for class: org.jboss.resteasy.examples.guice.hello.HelloResource
Peki, beklediğim gibi, bu değil işleri. Google Guice, kaynak sınıflarını benim için yapıcıyı kullanarak başlatmak için "akıllı" değildir.
Ama çalışmanın bir yolunu bulamıyorum. Gerçekten dürüst olmak gerekirse, Google Guice, Jetty ve Resteasy'nin bu senaryoda birbirleriyle nasıl oynandığını gerçekten karıştırıyorum. Ben kullanım @ApplicationPath
fikri terk ederse
, benim kaynakları hakkında Guice böyle benim HelloModule
yapılandırarak çalışmak:
public class HelloModule implements Module
{
public void configure(final Binder binder)
{
binder.bind(HelloResource.class);
binder.bind(IGreeterService.class).to(GreeterService.class);
binder.bind(UserResource.class);
binder.bind(IUserService.class).to(UserService.class);
}
}
Ama bu durumda
, ben (HelloResource
Kaynaklarımı kayıt kontrolünü geçiyorum ve
UserResource
) Guice'ye. Benim için esnek değil, çoklu
@ApplicationPath
'u ayarlayamıyorum.
Peki, ne eksik veya anlamadığım?
Sorunlu kod ile bir proje oluşturdum. Kurulumu ve testi çok kolaydır: https://github.com/dherik/resteasy-guice-hello/tree/so-question/README.md
Teşekkürler!
Ve web.xml hala gerekli değil? Ben haklı mıyım – SayusiAndo