0

我不明白为什么自动装配不能正常工作。我有一个使用 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正确制作豆子。

4

1 回答 1

1

试试@Repository("inventoryDAO")

于 2011-06-22T00:56:52.130 回答