【发布时间】:2020-10-04 22:15:58
【问题描述】:
我在运行测试时遇到此错误:
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.bonanza.api.IWorkflowService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
这是我在运行类时加载的 servlet-xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
<context:component-scan base-package="com.bonanza.*" />
<jpa:repositories base-package="com.bonanza.*" />
<!-- transaction management -->
<mvc:annotation-driven />
<bean id="workflowService"
class="com.bonanza.api.IWorkflowService" abstract="true"/>
..
</beans>
【问题讨论】:
-
这是您正在更新的旧项目还是正在创建的新项目?
-
遗留项目
-
@NunyetdeCanCalçada 你能提供你的Java类吗?如果你使用的是@Autowired?您的 XML 文件看起来不错,如当前所述。
-
据我所知,标记为“抽象”的 bean 没有被 Spring 实例化。通常抽象 bean 用于对子 bean 的公共属性进行分组并减少 XML 代码。第一步是在 XML 配置中删除
abstract="true"并检查接下来会显示哪个错误。另外,com.bonanza.api.IWorkflowService似乎是一个接口(根据它的名称),实际上 XML 中的 bean 定义应该指向一个接口实现。我同意,看看 IWorkflowService 声明会很有用。
标签: java spring spring-mvc dependency-injection inversion-of-control