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配置工作爲什麼私有構造的作品,但私人二傳手在SPRING DI IOC不

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

下面的XML配置不起作用

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

我知道,我們可以改變私人使用反射的訪問說明符。
我的問題是爲什麼Spring如此設計如果構造函數是私有的,Spring DI的工作原理是 ,但是如果Setter方法是私有的,則Spring DI不起作用。
什麼可能是春季設計師背後這種設計的可能動機?
當他們允許私人構造函數時,爲什麼他們不允許私人安裝人員?

+0

構造函數首先不應該是私有的。私人二傳手,但絕對沒有意義。他們只會被視爲私人方法。 – Charles

+0

@ c650爲什麼建設者不應該是私人的? – Kayaman

+0

@Kayaman因爲創建實例的人應該可以訪問構造函數。在一般情況下,你的構造函數不應該是私人的,除非你的類是。 – Charles

回答

0

春天並不需要了解您的私人數據成員,這就是爲什麼民營制定者不被支持。

現在即將到私有的構造函數,如你所說它遵循Singleton設計模式。爲了支持這個春天,你可以創建單身豆。

春天是完全基於反思。它遵循所有的設計原則並賦予開發者權力。