美文网首页
Spring自动装配之方法、构造器位置的自动注入

Spring自动装配之方法、构造器位置的自动注入

作者: nikori1990 | 来源:发表于2019-07-11 13:56 被阅读0次

    定义在造器上

    @Autowired //定义在构造器方法上
    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }
    

    或者

    // 定义在构造器参数上
    public UserService(@Autowired UserDao userDao) {
        this.userDao = userDao;
    }
    

    一般推荐注入位置放在构造器上,因为不管字段还是方法的方式注入,都是先创建组件,再注入依赖的组件,如果在构造方法上就需要使用依赖的组件,那么只有在构造器上注入才是可以实现的,因为执行顺序的问题;

    package com.yibai.spring.annotation.service;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Service;
     
    import lombok.Getter;
     
    @Getter
    @Service
    public class UserService {
     
        @Qualifier(value = "userDao")
        @Autowired(required = true)
        private UserDao userDao;
     
        public UserService() {
            //@Autowired定义在字段或者set方式上,在构造器上无法获取到依赖的组件
            System.out.println(userDao); // null
        }
     
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring自动装配之方法、构造器位置的自动注入

          本文链接:https://www.haomeiwen.com/subject/ejorkctx.html