zoukankan      html  css  js  c++  java
  • @Autowired使用说明

    注入顺序

    @Autowired先以类型进行注入,再以名称进行注入,而@Resource以名称进行注入,不太推荐。

    指定名称

    @Autowired遇到多个同继承类时可能会出问题,建议带个@Qualifier指定下名称。

    使用方式

    建议不要用在字段上,可能因未初始化而报空指针,建议用在setter或构造器上。

    初始化顺序

    Java变量初始化顺序:静态变量或静态语句块 > 实例变量或初始化语句块 > 构造方法 > @Autowired

    官方推荐写法

    • 构造注入
    @RestController
    public class PersonController {
    
        private final PersonService personService; //这里使用final表明这是个单例对象,即bean上未定义@scope默认为单例对象
    
       /**
         * 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;
        }
    }
    
  • 相关阅读:
    Centos7重置Mysql 8.0.1 root 密码
    MysQL使用一高级应用(下)
    MysQL使用一高级应用(上)
    MysQL使用一查询
    MysQL使用一创建库与表
    OSI七层协议模型、TCP/IP四层模型学习笔记
    python-作用域和装饰器
    python-正则表达式RE
    python-高阶函数和闭包
    python-内置函数及捕获异常
  • 原文地址:https://www.cnblogs.com/liehen2046/p/11058386.html
Copyright © 2011-2022 走看看