一尘不染

春天@Autowire属性vs塞特犬

java

将@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();
   }
}

阅读 187

收藏
2020-12-03

共1个答案

一尘不染

使用@Autowired注释,您不需要设置方法。一旦您的bean的构造函数完成了分配/创建对象的工作,Spring便会扫描该注释并注入您注释过的对象实例。

如果您有setter且仍在使用xml config,则可以显式设置属性。

话虽如此,您可以使用自动装配的注释来注释构造函数和setter方法,我希望这样做是可行的,因为这将使我在以后离开Spring时具有灵活性(尽管我不会这样做)。

2020-12-03