serviceA类extends ServiceB类,B通过@autowired方式加载A的实例,为什么在调用A实例时报错?

新手上路,请多包涵

问题描述

如题报错NoSuchBeanDefinitionException

问题出现的环境背景及自己尝试过哪些方法

B管理最底层的bean,A管理调用B接口方法和dao

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
B文件:
@ContextConfiguration(locations = {"classpath*:context.xml"})
@Service
public class B extends AbstractTestNGSpringContextTests {

@Autowired
public A a;
}

A文件:
@Service
public class A extends B{

@Autowired
public XXDAO xdao;
public String get(String aa){
return xdao.get(aa)}

}
C文件调用A的实例:
public class C extends B{

a.get(aa)

}

你期待的结果是什么?实际看到的错误信息又是什么?

期望C运行后能执行get方法,但始终加载不了A ,但别人的工程就可以,怀疑是有配置遗漏了?排查时在C中直接加载xdao.get(aa)方法是没有问题的,serviceA死活注入不成功...
报错信息
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [package.A] 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:1100)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 46 more
阅读 1.9k
1 个回答

B管理最底层bean为什么还要持有A对象, 为什么这样设计呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题