自動配線が正常に機能しない理由がわかりません。Spring 3を使用する非Webアプリケーションがあるため、アプリケーションのメインメソッドで、次のようなアプリケーションコンテキストを作成するように設定しました:
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
ログファイルで気付いた奇妙なことの1つ:
Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4440ece0: defining beans [*skipping*, inventoryDAOImpl, *skipping*]
それは私が@Repository
使用したクラスですが、実装していますInventoryDAO
。そこに表示されるのは間違っていませんinventoryDAOImpl
か?何が悪いのかを理解するにはどうすればよいですか?
編集: わかりました、おそらく問題はありません@Autowire
が@Repository
、Bean を正しく作成していないことが原因です。