2010-07-29 17 views

Répondre

5

Oui, vous pouvez. C'est dans le constructeur que vous ne pouvez pas l'utiliser.

import org.jboss.seam.Component; 
import org.jboss.seam.annotations.*; 
import org.jboss.seam.log.Log; 

@Name("foo") 
@AutoCreate 
public class Foo { 
    @Logger Log log; 
    @In Bar bar; 

    @Create 
    public void init() { 
     log.info("Init: #0", bar); 
     log.info("Init: #0", Component.getInstance("bar")); 
    } 
} 




import org.jboss.seam.annotations.AutoCreate; 
import org.jboss.seam.annotations.Name; 

@Name("bar") 
@AutoCreate 
public class Bar { } 

Et vous avez raison, apparemment dans le seam documentation ce n'est pas écrit. Mais je pense que la prise en charge de l'injection est la principale raison pour laquelle les annotations @Create ont été créées.

Parfois, un simple prototype est ce que vous avez besoin :)

+0

Une autre mise en garde sans papier: ** Assurez-vous que la méthode annotée avec '@ create' est * pas *' final' ** Ce mot-clé peut conduire à des incohérences si. vous avez des propriétés «privées» et d'autres choses. Evitez tout simplement. – acdcjunior