Comment injecter des beans spring dans une jsp 2.0 SimpleTag?
Actuellement ma jsp 2.0 balises qui ont besoin de beans spring utiliser ce code:
ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
La je viens d'obtenir le premier correspondant bean.
Ce code fonctionne très bien, mais a l'indésirable inconvénient que je passe environ la moitié de mon rendu de la page du temps à rechercher des beans spring, puisque cela se produit chaque fois qu'une balise est appelée. Je pensais peut-être à mettre la fève dans la portée de l'application ou au moins l'étendue de session. Mais ce qui est vraiment la façon la plus intelligente de la gestion de ce problème ?
'[stackoverflow.com/questions/3445908/...' a une bonne réponse à cette question. [1]: stackoverflow.com/questions/3445908/...
OriginalL'auteur krosenvold | 2009-08-18
Vous devez vous connecter pour publier un commentaire.
Ma première pensée est, êtes-vous sûr que les appels de printemps sont chers? Ce truc est assez largement optimisé, donc assurez-vous que c'est en fait un problème avant d'essayer de l'optimiser.
En supposant qu'il est un problème, une alternative est la
exposeContextBeansAsAttributes
etexposedContextBeanNames
propriétés deInternalResourceViewResolver
. Vous pouvez utiliser l'un ou l'autre (mais pas les deux) pour exposer certains ou la totalité de vos haricots en tant que JSP attributs.Ce qui soulève la possibilité de l'injection de beans Spring dans votre balise de classes. Par exemple, dans votre Printemps contexte, vous pouvez avoir:
Votre JSP:
DONC si
MyTag
définit un attributthing
de typeMyClass
, lemyBean
printemps bean devrait obtenir injecté comme normal JSP attribut.OriginalL'auteur skaffman
Un moyen plus simple serait d'utiliser @Configurable annotation sur le tag de la classe, ce serait faire le Printemps automatiquement fil les dépendances lorsque le tag est initialisé. Toutes les dépendances nécessaires peuvent alors être marqués avec @Autocâblés annotation et le Printemps sera le fil dans la dépendance, même si la balise n'est pas initialisé dans le Ressort du conteneur.
OriginalL'auteur Biju Kunjummen
Une autre façon d'y parvenir est d'utiliser une propriété statique de tenir la dépendance. Tout comme ci-dessous:
En vous applicationcontext, vous devez vous inscrire à la fois, de sorte que les balises JSP pouvez obtenir une chance d'être initié par le Printemps. Nous, nous allons avec la magie...
Cool hein, maintenant service est visible dans notre JSP tag 🙂
OriginalL'auteur user698188