java如何让@Repository工作?
我不明白为什么自动布线不能正常工作。我有一个使用spring 3的非web应用程序,因此在应用程序的主要方法中,我设置了如下创建应用程序上下文:
ApplicationContext ctx = new ClassPathXmlApplicationContext(
DEFAULT_APP_CONTEXT);
而且.xml
文件的顶部有自动布线工作所需的内容:
<context:annotation-config />
<context:component-scan base-package="star,hw" />
但是它不起作用。我有一个服务类,在hw
包下有一个类级@Repository
注释,但当尝试@Autowire
时,我得到:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'inventoryDAO' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 77 more
我在日志文件中注意到一件奇怪的事情:
Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4440ece0: defining beans [*skipping*, inventoryDAOImpl, *skipping*]
这是我在@Repository
上使用的类,但它实现了InventoryDAO
。它在那里显示inventoryDAOImpl
这不是不对吗?我能做些什么来找出问题所在
编辑:好吧,问题可能不在@Autowire
,而在@Repository
因为没有正确制作bean
# 1 楼答案
试试
@Repository("inventoryDAO")