@Autowired 是如何工作的
Jihongchang(讨论 | 贡献)2024年7月21日 (日) 03:42的版本
@Autowired 表示某个属性是否需要进行依赖注入,可以写在属性和方法上。
注解中的 required 属性默认为 true,表示如果没有对象可以注入给属性则抛异常。
@Service
public class OrderService {
@Autowired
private UserService userService;
}
@Autowired 加在某个属性上,Spring 在进行 Bean 的生命周期过程中,在属性填充这一步,
会基于实例化出来的对象,对该对象中加了 @Autowired 的属性自动给属性赋值。
Spring 会先根据属性的类型去 Spring 容器中找出该类型所有的 Bean 对象,
如果找出来多个,则再根据属性的名字从多个中再确定一个。
如果 required 属性为 true,并且根据属性信息找不到对象,则直接抛异常。