【发布时间】:2012-05-08 05:35:19
【问题描述】:
我有以下 java 类:
package configuration;
import common.config.ConfigurationService;
public class AppConfig {
private ConfigurationService configurationService;
public AppConfig(ConfigurationService configurationService){
this.configurationService = configurationService;
}
还有
public class ConfigurationServiceImpl
implements ConfigurationService, Runnable
{...
应用上下文文件如下:
<bean id="appConfig" class="configuration.AppConfig" scope="prototype">
<constructor-arg ref="configurationService"></constructor-arg>
</bean>
<bean id="configurationService" class="common.config.ConfigurationServiceImpl" scope="singleton" />
<bean id="propertyPlaceholderConfigurer" class="common.config.PropertyPlaceholderConfigurer">
<constructor-arg ref="configurationService" />
<constructor-arg ref="serviceName" />
</bean>
<bean id="serviceName" class="java.lang.String"><constructor-arg value="filter"/></bean>
在初始化期间,我收到以下错误,并且我的 bean 未初始化:
原因:org.springframework.beans.factory.BeanCreationException:创建在类路径资源 [conf/applicationContext.xml] 中定义的名称为“appConfig”的 bean 时出错:指定了 1 个构造函数参数,但在 bean 'appConfig 中找不到匹配的构造函数'(提示:为简单参数指定索引和/或类型参数以避免类型歧义)
如果我将 java 类代码修改如下,则 Spring 注入有效:
package configuration;
import common.config.ConfigurationServiceImpl;
public class AppConfig {
private ConfigurationServiceImpl configurationService;
public AppConfig(ConfigurationServiceImpl configurationService){
this.configurationService = configurationService;
}
【问题讨论】:
-
当它开始为您工作时,您更新了什么。你能指出来吗?
-
@Zaheer 当我更改 AppConfig 类时。
-
您使用的是什么版本的 spring,通过接口(代理)进行的依赖注入是否可以在您的应用程序中的任何位置工作,您是否有任何其他实例在您的应用程序中实现 ConfigurationService?
-
你可以试试
<constructor-arg index="0" ref="configurationService"/>吗? -
我试图重现你的问题,但我不能,
Impl类被注入到构造函数中,期望接口没有任何问题......