注解 @Autowired/@Resource 注入
@Autowired
默认按类型查找,当一个类型多个实现时,按名字找。按名字查找时,配合 @Qualifier
注解。
@Resource
默认按名字找,找不到时,按类型找。
1
2
3
4
|
public class IndexController {
@Autowired
private UserService userService;
}
|
这种注入方式不容易理解,属性的可访问性是私有的,即无 set 方法,也无有参构造,那是如何从外部注入的呢?
Spring 再怎么玩的花,也不能脱离 Java 的语法限制。它在注入前,修改了私有属性的可访问性,然后再注入。
1
|
userService.setAccessible(true);
|
setXXX方法注入
1
2
3
4
5
6
7
8
|
public class IndexController {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
}
|
有参构造方法注入