Java 无法在spring中注入请求范围的bean

Java 无法在spring中注入请求范围的bean,java,spring,Java,Spring,所以我有一个用于数据库管理的bean。我用以下方式定义它: <bean id="dbmanager" class="rpg.commons.database.DBManager" scope="request"/> 我还尝试了@Autowired,但在每种情况下,当我尝试在glassfish服务器上部署它时,都会出现以下异常 java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: s

所以我有一个用于数据库管理的bean。我用以下方式定义它:

<bean id="dbmanager" class="rpg.commons.database.DBManager" scope="request"/>
我还尝试了@Autowired,但在每种情况下,当我尝试在glassfish服务器上部署它时,都会出现以下异常

java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homePageController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected rpg.commons.database.DBManager rpg.web.controllers.AbstractController.dbmanager; nested exception is java.lang.UnsupportedOperationException
homePageController是继承my AbstractController的简单控制器。
我还试图将字段更改为public,但它没有更改任何内容…

@EJB是一个用于注入的注释,这是您所期望的。。。EJB。因为您的bean不是一个EJB,所以它当然不会工作。以下是使用Spring处理依赖项注入的两种方法:

通过xml进行注入 然后,以下构造将起作用:

@Autowired
protected DBManager dbmanager;

您不能将请求范围的bean直接注入sigleton,而是注入请求范围的代理:

<bean id="dbmanager" class="rpg.commons.database.DBManager" scope="request">
  <aop:scoped-proxy/>
</bean>


您必须使用
aop:scoped proxy
@ScopedProxy
从spring reference检查这一点
<context:component-scan base-package="rpg.commons.database" />
@Autowired
protected DBManager dbmanager;
<bean id="dbmanager" class="rpg.commons.database.DBManager" scope="request">
  <aop:scoped-proxy/>
</bean>