0
public class PrefixGenerator implements Generator { 

    private String customDependency; 

    private PrefixGenerator() { 
     System.out.println("PrefixGenerator Instantiated"); 
    } 

    private PrefixGenerator(int status) { 
     System.out.println("PrefixGenerator with int arg Instantiated"); 
    } 

    private void setCustomDependency(String customDependency) { 
     this.customDependency = customDependency; 
    } 
} 

XML設定の下なぜプライベートコンストラクタの作品が、XMLコンフィグ以下はプライベートセッターはSPRING DI IOCにない

<bean id="bean1" class="com.hike.pojo.PrefixGenerator"> 
<constructor-arg name="status" value="0"></constructor-arg> 
</bean> 

は、私が知っている

<bean id="bean2" class="com.hike.pojo.PrefixGenerator"> 
<property name="customDependency" value="Hmm"></property> 
</bean> 

を動作しません、我々はプライベートに変更することができます動作しますリフレクションを使用したアクセス指定子。
私の質問はSpringがなぜ設計されているのかコンストラクターがプライベートで、Spring DIが動作する場合 Setterメソッドがprivateの場合、Spring DIは機能しません。
このデザインの背後にある春デザイナーの動機は何でしょうか?
Private Constructorを許可したときにプライベートSetterを許可できないのはなぜですか?

+0

コンストラクタは、最初はプライベートであってはいけません。しかしながら、プライベートセッターは絶対に意味をなさない。彼らは単に私的な方法として扱われるだろう。 – Charles

+0

@ c650コンストラクタをプライベートにしないでください。 – Kayaman

+0

@ Kayamanインスタンスを作成している人は誰でもコンストラクタにアクセスできるはずです。一般的なケースでは、あなたのクラスがそうでない限り、あなたのコンストラクタはプライベートであってはいけません。 – Charles

答えて

0

春はプライベートデータメンバーについて知る必要はないため、プライベートセッターはサポートされていません。

今は、シングルトンのデザインパターンに従っていると言ったように、プライベートコンストラクタに着きます。このスプリングをサポートするためにシングルトンBeanを作成することができます。

春は完全に反射に基づいています。それはすべての設計原則に従い、開発者に力を与えます。

関連する問題