2011-07-07 8 views
2
@Autowired 
private String defaultLanguage; 

次のように私は@AutowireCountryBeanクラスのdefaultLanguageフィールドを試してみてください。このSpring MVC String BeanプロパティでAutowiringが動作しないのはなぜですか?

<beans:bean id="countryBean" class="geoapp.CountryBean"> 
    <beans:property name="defaultLanguage" value="English" /> 
</beans:bean> 

私はこのエラーを取得する:

Error creating bean with name 'CountryBean': 
Injection of autowired dependencies failed; 
nested exception is 
org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: 
private java.lang.String geoapp.CountryBean.defaultLanguage; 
nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No matching bean of type [java.lang.String] found for dependency: 
expected at least 1 bean which qualifies as autowire candidate for 
this dependency. 
Dependency annotations: 
{@org.springframework.beans.factory.annotation.Autowired(required=true)}: 

それはNo matching bean of type [java.lang.String] found for dependencyを言うとき、何か他のものがありますかしら値EnglishStringであることをお知らせする必要がありますか?

答えて

1

オートワイヤー機能が正しく使用されていません。 次のいずれかを実行できます

  • はXMLで<beans:property ... />を使用して、自動的にあなたの財産を持っている既存のBeanのSpringコンテキストに見えます@Autowiredアノテーションを使用したクラスに
  • のプロパティのセッターを追加(あなたのケースでは、String)クラス
2

あなたが明示的にXMLを介しプロパティの値を指定しているので、AutoWiredアノテーションを持っている必要はありません。

0

その他の回答は正しいが、* .xmlファイルで定義されたBeanは処理される前に処理されます。したがって、あなたの例では、bean "CountryBean"は "defaultLanguage"プロパティが処理される前に処理され、依存関係はnullのままです。

0

もう1つの答えは正しいですが、ここでは別のおしゃべりがあります。春は自動的に列挙型を設定します。したがって、言語の列挙型があり、Bean定義に "

0

プロパティのオートワイヤリングを行うには、そのdefaultLanguage文字列の新しいBeanを作成し、Beanの名前とフィールドの名前を同じにする必要があります。

関連する問題