Spring 在构造函数注入期间解析为null的Bean

Spring 在构造函数注入期间解析为null的Bean,spring,resteasy,Spring,Resteasy,我想在spring中使用reasteasy和jax-rs创建一个restapi。为此,以下行是我的应用程序上下文的一部分: <bean id="RESTeasyProviderFactory" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean"> <property name="attributeName" value="org.jboss.resteasy

我想在spring中使用reasteasy和jax-rs创建一个restapi。为此,以下行是我的应用程序上下文的一部分:

<bean id="RESTeasyProviderFactory" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean">
    <property name="attributeName" value="org.jboss.resteasy.spi.ResteasyProviderFactory" />
</bean>

<bean id="RESTeasyRegistry" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean">
    <property name="attributeName" value="org.jboss.resteasy.spi.Registry" />
</bean>

<bean id="RESTeasyBeanPostProcessor" class="org.jboss.resteasy.plugins.spring.SpringBeanProcessor">
    <constructor-arg>
        <bean class="org.jboss.resteasy.core.AsynchronousDispatcher">
            <constructor-arg ref="RESTeasyProviderFactory" />
        </bean>
    </constructor-arg>
    <constructor-arg ref="RESTeasyRegistry" />
    <constructor-arg ref="RESTeasyProviderFactory" />
</bean>
调试器显示resteasyregistry bean和resteasyproviderfactory bean都解析为null

有人能解释这是怎么发生的吗? 作为测试,我更改了xml,以便将注册表和工厂设置为属性,但即使在设置器被调用时,注册表和工厂也是空的

*EDIT2:spring调试日志*

这里是spring调试日志中的相关部分

2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyBeanPostProcessor'
2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyBeanPostProcessor'
2012-06-01 12:13:34,337 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.jboss.resteasy.core.AsynchronousDispatcher#e0380'
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyProviderFactory'
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyProviderFactory'
2012-06-01 12:13:34,340 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyProviderFactory' to allow for resolving potential circular references
2012-06-01 12:13:34,350 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyProviderFactory'
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.jboss.resteasy.core.AsynchronousDispatcher#e0380'
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'RESTeasyRegistry'
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'RESTeasyRegistry'
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyRegistry' to allow for resolving potential circular references
2012-06-01 12:13:34,386 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyRegistry'
2012-06-01 12:13:34,389 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'RESTeasyProviderFactory'
2012-06-01 12:13:34,393 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'RESTeasyBeanPostProcessor' to allow for resolving potential circular references
2012-06-01 12:13:34,393 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'RESTeasyBeanPostProcessor'

您是否尝试在构造函数上使用索引

e、 g

7500000
42
您的属性似乎也引用了类:

<property name="attributeName" value="org.jboss.resteasy.spi.Registry" />


你能在这里发布你的类或者告诉我们你到底想注入什么吗?

我通过为这两个bean编写我自己的单例工厂来解决这个问题。这很烦人,不应该是必要的,但它奏效了


最后,我们完全更改了配置的这一部分,因此即使是这个丑陋的解决方案也变得不必要了。

日志中还有其他内容吗?前两个bean的属性名真的是“attributeName”吗?这些属性设置正确(是的,它们被称为attribueName)。但是在后处理器的构造函数中,两个引用都被解析为null(没有警告,异常,…),我错误地读取了bean定义并查找了错误的类——对不起。
   <constructor-arg index="0"><value>7500000</value></constructor-arg>
   <constructor-arg index="1"><value>42</value></constructor-arg>
<property name="attributeName" value="org.jboss.resteasy.spi.Registry" />