@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; } }
@RestController public class PersonController { private PersonService personService; @Autowired @Qualifier("personService") public void setPersonService(PersonService personService) { this.personService = personService; } }