Permettra à l'autowiring de la portée de la requête haricots en application de l'étendue des haricots
Est-il possible de autowire une demande d'étendue de fève dans une application étendue de haricot. j'.e
J'ai une classe RequestScopedBean:
class RequestScopedBean {
....
....
....
}
et une Application de classe étendue de haricot dans laquelle la portée de la requête, la fève est autocâblés.
class ApplicationScopedBean {
@Autowire
private RequestScopedBean requestScopedBean;
....
....
....
}
et le printemps-config xml est comme suit:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
">
<bean id="applicationScopedBeans" class="ApplicationScopedBean" />
<bean id="requestScopedBean" class="RequestScopedBean" scope="request">
</bean>
</beans>
lorsque j'essaie d'exécuter cette application, le haricot création de applicationScopedBean échoue avec l'erreur suivante:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ApplicationScopedBean': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private RequestScopedBean requestScopedBean; nested exception is java.lang.IllegalStateException: No Scope registered for scope 'request'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075)
at com.amazon.coral.reflect.instantiate.SpringInstantiatorFactory$1.newInstance(SpringInstantiatorFactory.java:168)
... 19 more
OriginalL'auteur Lydwin | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
L'exception ci-dessus suggère que vous n'avez pas configuré correctement Printemps pour la mise à disposition de la portée de la requête haricots.
Vous devez l'ajouter à votre web.xml comme décrit dans la documentation ici:
Cependant, il n'est plus question que de simplement la configuration. Vous tentez d'injecter une demande d'étendue de fève dans un singleton étendue de haricot. Printemps résout les dépendances et instancie les singletons lorsque le conteneur d'injection de dépendances commence. Cela signifie que ApplicationScopedBean seulement sera créé une fois (à ce stade, il n'y aura pas de demande en vol et donc l'permettra à l'autowiring seront les plus susceptibles d'échouer).
Si vous avez été en utilisant un prototype de l'étendue de haricots à la place de la portée de la requête que vous avez à réfléchir au moyen de suppling le singleton étendue de haricot avec une nouvelle instance à chaque fois il a été utilisé. Les approches pour ce sont décrits dans le Méthode D'Injection chapitre de Printemps docs.
OriginalL'auteur Alex Barnes
Vous devez marquer votre
requestScopedBean
comme une étendue de proxy aussi, de cette façon, le Printemps sera l'injecter dans un proxy pour requestScopedBean et à l'arrière-plan de gérer le champ d'application de manière appropriée.Plus ici
OriginalL'auteur Biju Kunjummen