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 Config работаетПочему частные Конструкторы работает, но Частный сеттер не в SPRING DI МОК
<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>
Я знаю, мы можем изменить Private Access Specifier с использованием отражения.
Мой вопрос: почему Spring так спроектирован, что если Constructor является приватным, Spring DI работает , но если метод Setter является приватным, Spring DI не работает.
Что может быть возможным мотивом Spring Designers за этот дизайн?
Почему они не разрешают приватным сеттерам, когда им разрешен частный конструктор?
Конструкторы не должны быть частными в первую очередь. Частные сеттеры, однако, не имеют абсолютно никакого смысла. Их рассматривали бы просто как частные методы. – Charles
@ c650 Почему конструкторы не должны быть частными? – Kayaman
@ Кайаман. Тот, кто создает экземпляр, должен иметь доступ к конструктору. В общем случае ваши конструкторы не должны быть закрытыми, если только ваш класс не является. – Charles