@Autowired使用說明

注入順序

@Autowired先以類型進行注入,再以名稱進行注入,並且@Resource以名稱進行注入,不太推薦。函數

指定名稱

@Autowired遇到多個同繼承類時可能會出問題,建議帶個@Qualifier指定下名稱。this

使用方式

建議不要用在字段上,可能因未初始化而報空指針,建議用在setter或構造器上。指針

初始化順序

Java變量初始化順序:靜態變量或靜態語句塊 > 實例變量或初始化語句塊 > 構造方法 > @Autowiredcode

官方推薦寫法

  • 構造注入
@RestController
public class PersonController {

    private final PersonService personService;

   /**
     * Spring Team建議:「始終在bean中使用基於構造函數的依賴注入。始終使用斷言來強制依賴」。
     */
    @Autowired
    public PersonController(@Qualifier("personService") PersonService personService){
        Assert.notNull(personService, "personService must not be null");
        this.personService = personService;
    }
}
  • set注入
@RestController
public class PersonController {

    private PersonService personService;

    @Autowired
    @Qualifier("personService")
    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }
}
相關文章
相關標籤/搜索