将@Autowired注释到属性或在设置器中进行注释有什么区别?
据我所知,它们都具有相同的结果,但是是否有任何理由要使用一个?
更新(更简洁)
两者之间有区别吗
package com.tutorialspoint; import org.springframework.beans.factory.annotation.Autowired; public class TextEditor { private SpellChecker spellChecker; @Autowired public void setSpellChecker( SpellChecker spellChecker ){ this.spellChecker = spellChecker; } public void spellCheck() { spellChecker.checkSpelling(); } }
还有这个
package com.tutorialspoint; import org.springframework.beans.factory.annotation.Autowired; public class TextEditor { @Autowired private SpellChecker spellChecker; public TextEditor() { System.out.println("Inside TextEditor constructor." ); } public void spellCheck(){ spellChecker.checkSpelling(); } }
使用@Autowired注释,您不需要设置方法。一旦您的bean的构造函数完成了分配/创建对象的工作,Spring便会扫描该注释并注入您注释过的对象实例。
@Autowired
如果您有setter且仍在使用xml config,则可以显式设置属性。
话虽如此,您可以使用自动装配的注释来注释构造函数和setter方法,我希望这样做是可行的,因为这将使我在以后离开Spring时具有灵活性(尽管我不会这样做)。