Конструктор аргов весной?
Как я буду создавать экземпляр именованного конструктора. Конструктор такой
public MachineInPitImpl(MachineInPitImpl mip){
//here are the attributes initialised
}
Как я дам этот конструктор как конструктор-args весной.
Я пробовал это, но не работает, он все еще инициализирует конструктор по умолчанию. Я не хочу инициализировать минусы по умолчанию. Я хочу, чтобы весна инициализировала вышеупомянутый конструктор
<bean id="machineInPitImpl" class="minestar.pitlink.domain.pitmodel.MachineInPitImpl" abstract="true">
<constructor-arg ref="machineInPitImpl"/>
</bean>
2 ответа
Вы пытались внедрить ту же ссылку на компонент в XML,
<bean id="textEditor" class="com.tutorialspoint.TextEditor">
<constructor-arg ref="spellChecker"/>
</bean>
<bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
public TextEditor(SpellChecker spellChecker) {
System.out.println("Inside TextEditor constructor." );
this.spellChecker = spellChecker;
}
public SpellChecker(){
System.out.println("Inside SpellChecker constructor." );
}
Имеет смысл. Когда вы пытаетесь это сделать,
ApplicationContext context =
new ClassPathXmlApplicationContext("app.xml");
TextEditor te = (TextEditor) context.getBean("textEditor");
Spring внедряет зависимости, так что вам не нужно передавать объекты просто для использования в качестве аргументов конструктора.
определите все ссылки, которые вам нужны, как члены, которые будут автоматически вставлены пружиной, и вызовите метод init для выполнения любой логики, которую вы хотите при создании экземпляра
<bean id="machineInPitImpl" class="minestar.pitlink.domain.pitmodel.MachineInPitImpl" abstract="true"
init-method="init"
p:machineInPitImpl-ref="machineInPitImpl"
/>
обратите внимание, что я игнорирую, что вы пытаетесь внедрить в себя боб, который не имеет особого смысла, на что указывают комментаторы.