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;
}
}
Below Xml Config arbeitetWarum Private Constructor funktioniert, aber Privat Setter nicht in SPRING DI IOC
<bean id="bean1" class="com.hike.pojo.PrefixGenerator">
<constructor-arg name="status" value="0"></constructor-arg>
</bean>
Unter XML-Konfigurations nicht
<bean id="bean2" class="com.hike.pojo.PrefixGenerator">
<property name="customDependency" value="Hmm"></property>
</bean>
funktionierts ich weiß, können wir Privat ändern Zugriffsspezifizierer mit Reflektion.
Meine Frage ist Warum ist Spring So entworfen, dass, wenn Konstruktor privat ist, Spring DI funktioniert, aber wenn Setter-Methode privat ist, funktioniert Spring DI nicht.
Was könnte Spring Designers Motiv hinter diesem Design sein?
Warum konnten sie private Setzer nicht zulassen, wenn sie privaten Konstrukteuren erlaubten?
Konstruktoren sollten nicht in erster Linie privat sein. Private Setter machen jedoch absolut keinen Sinn. Sie würden einfach als private Methoden behandelt werden. – Charles
@ c650 Warum sollten Konstruktoren nicht privat sein? – Kayaman
@Kayaman Da sollte derjenige, der eine Instanz erstellt, Zugriff auf den Konstruktor haben. Im Allgemeinen sollten Ihre Konstruktoren nicht privat sein, es sei denn Ihre Klasse ist. – Charles