Spring中的构造函数args?

时间:2014-10-22 10:46:38

标签: java spring constructor-injection

如何实例化命名构造函数。构造函数就像这样

 public MachineInPitImpl(MachineInPitImpl mip){
 //here are the attributes initialised
 }  

我如何在spring中将此构造函数作为constructor-args。

我试过这个,但没有工作,它仍然初始化默认构造函数。我不想初始化默认缺点。我希望spring初始化上面的构造函数

<bean id="machineInPitImpl" class="minestar.pitlink.domain.pitmodel.MachineInPitImpl" abstract="true">
    <constructor-arg ref="machineInPitImpl"/>

</bean>

2 个答案:

答案 0 :(得分:0)

Spring注入依赖项,因此您不必仅传递对象以用作构造函数参数。

定义您需要的任何引用作为将由spring自动注入的成员,并调用init方法以在实例化时执行您想要的任何逻辑。

<bean id="machineInPitImpl" class="minestar.pitlink.domain.pitmodel.MachineInPitImpl"  abstract="true"  
  init-method="init"
  p:machineInPitImpl-ref="machineInPitImpl"  
/>

请注意,我忽略了你试图将豆子注入其自身,这一点并不像评论者所指出的那样有意义。

答案 1 :(得分:0)

您已尝试在xml中注入相同的bean引用,

       <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");
相关问题