2014-07-27 27 views
5

CDI kullanan mamute açık kaynak kodlu bir projenin kod tabanına bakıyorum. Çoğu sınıfta, onaylanmamış bir no-arg kurucu ve bir kurucu @Inject açıklamalıdır. This, söz konusu projede bu yaklaşımı kullanan bir örnek sınıftır. Yani benim sorum, @Inject no'lu bir kurucuya sahip olsak bile no-arg kurucumuz olmalı mı? Ben this javadoc for the Controller annotation buldumJava'da CDI kullanıldığında, varsayılan kurucu gerekli midir?

import br.com.caelum.vraptor.Controller; 
... 
import br.com.caelum.vraptor.routes.annotation.Routed; 
... 

@Routed 
@Controller 
public class QuestionController { 
    ... 
} 

:

cevap

7

bağlantılı sınıf aşağıdaki ithalat ve ek açıklamaları vardır. @RequestScoped açıklama burada

@Target(value=TYPE) 
@Documented 
@Retention(value=RUNTIME) 
@Stereotype 
@RequestScoped 
public @interface Controller 

Not.

İstek kapsamı normal bir kapsamdır (uygulama, oturum ve konuşma kapsamlarının yanı sıra) ve JBoss Weld normal kapsamlı çekirdekler için istemci proxy'leri kullanır.

aşağıdaki Java tipleri konteyner tarafından proxy edilemez: Kaynak aşağıdaki ihtiyacı vekiller oluşturmak edebilmek için,

  • sınıflar parametreleri olmayan bir özel olmayan yapıcı yoktur ve
  • ...

Kaynak: Weld - CDI Reference Implementation, 4.9. Client proxies

Diğer durumlarda, varsayılan olmayan varsayılan kurucuya ihtiyacınız yoktur (bkz. @Singleton beans).

Daha bağlantılar:

İlgili konular