@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,并且根据属性信息找不到对象,则直接抛异常。