定义在造器上
@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;
}
}
网友评论