美文网首页
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