如何使@Repository工作?

时间:2011-06-22 00:21:16

标签: java spring-3 spring-annotations

我无法弄清楚为什么自动装配不能正常工作。我有一个使用spring 3的非Web应用程序,因此在应用程序的main方法中我设置了这样创建应用程序上下文:

    ApplicationContext ctx = new ClassPathXmlApplicationContext(
                        DEFAULT_APP_CONTEXT);

.xml文件顶部有自动装配工作所需的东西:

<context:annotation-config />
<context:component-scan base-package="star,hw" />

然而它不起作用。我在@Repository包下有一个类级hw注释的服务类,但在尝试@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 个答案:

答案 0 :(得分:1)

尝试@Repository("inventoryDAO")