0
autowiringがなぜ機能しないのかわかりません。@Repositoryの作り方は?
ApplicationContext ctx = new ClassPathXmlApplicationContext(
DEFAULT_APP_CONTEXT);
そして.xml
ファイルは先頭にのために必要なものを持っている:私は春3を使用していますので、私はこのようなアプリケーション・コンテキストを作成するために設定したアプリケーションのmainメソッドで非Webアプリケーションをしました仕事にオートワイヤリングする:
<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.s[email protected]4440ece0: defining beans [*skipping*, inventoryDAOImpl, *skipping*]
私は@Repository
を使ったクラスですが、それはInventoryDAO
を実装しています。それはそこに示すことが間違っていないinventoryDAOImpl
?何が間違っているか把握するにはどうすればよいですか?
編集:はい、おそらく問題は@Autowire
ではなく、@Repository
で正しく作成していない可能性があります。
これは、トリックでした!どうして? :o私は '@ Repository'を何も書かなくても使っているウェブアプリケーションを持っています。 – Rihards
任意のフォームでautowiring-by-nameを使用している場合、Bean名のデフォルトはクラス名(最初の文字はダウンケース)です。あなたのケースのbean名はinventoryDaoImplでした。 autowiring-by-typeでは、DAOがアプリケーションコンテキスト(通常はDAOの場合)で唯一のものである限り、名前を指定する必要はありません。 –
デフォルトで@Autowireはタイプではありませんでしたか?どのようにautowire-by-type? DAOをオートワイヤリングするために、純粋な '@ Autowire'をサービスクラスのフィールドに追加しました。 – Rihards