@Component
public class StudentService {
/**
* @Resource JSR-250规范定义的注解
* 1、如果有name属性,现根据name找,如果没有找到就报错
* 2、如果没有name属性,则根据名称去找,如果找到就直接返回(byName不会找到多个),否则执行步骤3
* 3、如果第2步没有找到,则根据type去找,如果找到唯一bean则返回,如果没有找到或者找到多个,都会报错
*/
@Resource(name = "userService")
UserService userService;
/**
* @Autowired (先byType 再byName) spring自己定义的
* 1、现根据type去找,如果没有找到就报错,如果找到一个就直接返回,如果找到多个,就执行2步骤
* 2、如果第一步找到多个,则判断 ---> autowireCandidate (@bean的属性)false则不参与
* ---> @Qualifier(取别名)
* ---> @Primary
* ---> @Priority(5)取优先级 (只能用在类上)
* 3、如果第2步没有找到,则根据name去找,如果找到唯一bean则返回,如果没有会报错
*/
@Autowired
UserService userService2;
/**
*这里的NAME是XXX找,而不是userService
*/
@Resource
public void setXXX(UserService userService) {
}
/**
*这里name是userService 执行@Autowired流程
*/
@Autowired
public void setXXX(UserService userService) {
}
}
spring依赖注入的原理(@Resource & @Autowired)
最新推荐文章于 2024-04-18 16:17:48 发布