@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; } }