赞
踩
Spring中的三种依赖注入方式
@Autowired注解的一大使用场景就是Field Injection。
@Controller
public class UserController {
@Autowired
private UserService userService;
}
通过Java的反射机制实现,所以private的成员也可以被注入具体的对象
Constructor Injection是构造器注入,是我们日常最为推荐的一种使用方式。
@Controller
public class UserController {
private final UserService userService;
public UserController(UserService userService){
this.userService = userService;
}
}
通过对象构建的时候建立关系,这种方式对对象创建的顺序会有要求,当然Spring会为你搞定这样的先后顺序,除非你出现循环依赖,然后就会抛出异常。
Setter Injection需要依赖@Autowired注解,使用方式与Field Injection有所不同,Field Injection时@Autowired是用在成员变量上,而Setter Injection的时候,@Autowired是用在成员变量的Setter函数上。
@Controller
public class UserController {
private UserService userService;
@Autowired
public void setUserService(UserService userService){
this.userService = userService;
}
}
通过调用成员变量的set方法来注入想要使用的依赖对象。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。