2

Spring を使用すると、注入された変数のセッターを作成しなくても、セッターベースの依存性注入を実行できるといういくつかの Web サイトを読みました。コードをきれいに整理します。私はこれを別のサイトで読み、ここでもstackoverflowで読みました。

私はそれを試しましたが、私の場合はうまくいきません。3.2.0.RELEASE を使用しています。次のエラーが表示されます。

 Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'DI_without_setter' defined in class path resource [SpringBeans.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'url' of bean class [net.comsys.springpropstest.DiWithoutSetter]: Bean property 'url' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

私のJavaテストコード

パッケージ net.xxx.springpropstest;

public class DiWithoutSetter {
private String url;
}

メインコードに追加しました。ここには表示されません。メインコードでは DiWithoutSetter も使用していません。

SpringBeans.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="DI_without_setter" class="net.xxx.springpropstest.DiWithoutSetter">
    <property name="url" value="jan" />
</bean>

誰かが彼の問題に光を当てることができれば、それはありがたいです. セッターメソッドを使用せずにSpring Beanで(パブリック)変数の値を設定することは可能ですか?

4

2 に答える 2

1

それはできません(セッターが必要です)。そのチュートリアルは間違っているようです(ソースzipの例では、クラスにゲッターとセッターがあります)。

自動配線を使用して、セッターまたは@Injectフィールドを暗黙的に追加します。

于 2013-01-17T17:23:45.920 に答える
1

フィールドに注釈を付け、@Autowiredこのインジェクションのコンポーネント スキャンを有効にして、セッター メソッドなしで機能させる必要があります。

于 2013-01-17T17:31:12.840 に答える