JSF 2 injecte Spring bean / service avec @ManagedProperty et aucun xml
Je voudrais utiliser jsf annotations et quelques printemps
annotations à injecter un printemps bean/service dans un managed bean jsf.
(sur la jsf bean je veux seulement utiliser jsf annotations)
Je ne veux pas utiliser les annotations comme @named
/@inject
.
J'ai essayé de trouver une solution sur le net mais sans succès.
Exemple
@ManagedBean
@ViewScoped
public class MyBean {
@ManagedProperty(value = "#{mySpringBean}")
private MySpringBean mySpringBean;
public void setMySpringBean(MySpringBean mySpringBean) {
this.mySpringBean = mySpringBean;
}
public void doSomething() {
//do something with mySpringBean
}
}
Est quelque chose comme cela possible sans l'utilisation de xml. Par exemple,
Je ne voudrais PAS utiliser quelque chose comme
FacesContextUtils.getWebApplicationContext(context).getBean("MySpringBean");
ou dans faces-config.xml
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>com.mytest.MyBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
<managed-property>
<property-name>mySpringBean</property-name>
<value>#{mySpringBean}</value>
</managed-property>
</managed-bean>
Est quelque chose comme ci-dessus possible avec des annotations et sans
la définition de l'ensemble de la jsf haricots/propriétés et les beans spring/propriétés
chaque haricot dans la config des fichiers xml?
source d'informationauteur Dimman | 2012-01-19
Vous devez vous connecter pour publier un commentaire.
Si vous avez déjà le Printemps conteneur pourquoi ne pas utiliser son @Autocâblés annotation. Pour cela, mettez à Jour votre faces-config.xml comme suggéré par Boni. Puis ajouter ces écouteurs à votre web.xml après cette
Puis ajoutez-les à votre applicationContext.xml
Maintenant, vous pouvez utiliser le Printemps des annotations et votre bean sera quelque chose comme ceci:
D'annoter vos MySpringBeanClass avec @Service
Voir Aussi:
Mettez ce code dans votre faces-config.xml
Puis dans votre ManageBean appel du Constructeur;
MySpringBean dire que votre Printemps Bean Classe
En supposant que vous avez configuré le Printemps correctement dans web.xml et applicationContext.xml.
Prendre l'entrée suivante dans faces-config.xml
Votre exemple de code donné ci-dessus semble bien. Ce qui va se passer au-dessus de l'entrée est Géré Propriété sera d'abord regardé dans les haricots géré par JSF s'ils ne sont pas va être recherché dans les haricots géré par Spring. Votre printemps bean devrait avoir le bon annotations marqué et le nom donné à @ManagedProperty doit correspondre avec défaut/nom donné aux haricots.
Comme mentionné par @Boni qui n'est pas requis, il est auto injecté. J'ai utilisé les paramètres comme vous le souhaitez.
Une note de côté: Puisque vous êtes en optant pour l'étendue de l'affichage, veuillez jeter un oeil à ce lien Les avantages et les pièges de @ViewScoped