【问题标题】:Cannot find bean to autowire which is in maven dependencies in jar,在 jar 的 maven 依赖项中找不到要自动装配的 bean,
【发布时间】:2015-09-29 07:20:58
【问题描述】:

我使用 maven 添加 jar 和 bean。 比我想在上下文文件中自动装配它们...

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="statisticsService" class="com.ac.kpi.AcStatisticsService">
        <constructor-arg name="dataService" ref="acDataService"/>
    </bean>

</beans>

问题:当我运行 tomcat 时出现错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ac.kpi.StatisticsService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1326)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1072)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)

尽管所有 maven 依赖项都已导入并存在。 MoreOver在Idea中,在LinuxOS的everyring中工作,问题只在eclipse、Windows OS中。

【问题讨论】:

  • 检查您的 war/ear 文件,其中包含弹簧罐。检查 pom 文件中 jar 的范围。
  • 看起来一切正常,此外,另一个 bean 已正确加载。
  • 您是否在根上下文 xml 中添加了注释驱动标签?

标签: java eclipse spring maven


【解决方案1】:

我有时也和你有同样的问题。删除本地.m2中的com.ac.*包文件,然后重新下载。

【讨论】:

    【解决方案2】:

    如果 Spring 没有找到任何要自动装配的 bean,则会引发这种异常。这可能是因为您正在自动装配接口,但该接口没有实际实现。检查您的 StatisticsService 是否属于这种情况。

    【讨论】:

    • 是接口,你能告诉我为什么不能使用接口进行自动装配吗?
    • 我写了一个实际的答案,因为我没有足够的声誉来写评论......对不起,我要改写我的答案。 @Edgar,您可以自动装配接口,但您还需要实现该接口,否则 Spring 将找不到它,因此它会抛出此异常。
    • 实现存在于同一个 jar 中。
    • 好的,那么问题可能出在构造函数参数上。你在其他地方注册了那个bean吗?如果没有,只需将以下行添加到 beans.xml:
    猜你喜欢
    • 2017-09-07
    • 2020-08-28
    • 2017-05-03
    • 2013-03-28
    • 2020-04-21
    • 2020-09-21
    • 2016-12-30
    • 2020-11-20
    • 2016-10-01
    相关资源
    最近更新 更多