“@Autowired 是如何工作的”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第18行: | 第18行: | ||
如果 required 属性为 true,并且根据属性信息找不到对象,则直接抛异常。 | 如果 required 属性为 true,并且根据属性信息找不到对象,则直接抛异常。 | ||
+ | |||
+ | <syntaxhighlight lang="java"> | ||
+ | @Service | ||
+ | public class OrderService { | ||
+ | |||
+ | private UserService userService; | ||
+ | |||
+ | /** | ||
+ | * @param userService the userService to set | ||
+ | */ | ||
+ | public void setUserService(UserService userService) { | ||
+ | this.userService = userService; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight>当 @Autowired 注解写在某个方法上时,Spring 在 Bean 生命周期的属性填充阶段, | ||
+ | |||
+ | 会根据方法的参数类型、参数名字从 Spring 容器找到对象当做方法入参,自动反射调用该方法。<syntaxhighlight lang="java"> | ||
+ | @Service | ||
+ | public class OrderService { | ||
+ | |||
+ | private UserService userService; | ||
+ | |||
+ | @Autowired | ||
+ | public OrderService(UserService userService) { | ||
+ | this.userService = userService; | ||
+ | } | ||
+ | |||
+ | public OrderService(UserService userService, UserService userService1) { | ||
+ | this.userService = userService; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> |
2024年7月21日 (日) 03:55的版本
@Autowired 表示某个属性是否需要进行依赖注入,可以写在属性和方法上。
注解中的 required 属性默认为 true,表示如果没有对象可以注入给属性则抛异常。
@Service
public class OrderService {
@Autowired
private UserService userService;
}
@Autowired 加在某个属性上,Spring 在进行 Bean 的生命周期过程中,在属性填充这一步,
会基于实例化出来的对象,对该对象中加了 @Autowired 的属性自动给属性赋值。
Spring 会先根据属性的类型去 Spring 容器中找出该类型所有的 Bean 对象,
如果找出来多个,则再根据属性的名字从多个中再确定一个。
如果 required 属性为 true,并且根据属性信息找不到对象,则直接抛异常。
@Service
public class OrderService {
private UserService userService;
/**
* @param userService the userService to set
*/
public void setUserService(UserService userService) {
this.userService = userService;
}
}
当 @Autowired 注解写在某个方法上时,Spring 在 Bean 生命周期的属性填充阶段, 会根据方法的参数类型、参数名字从 Spring 容器找到对象当做方法入参,自动反射调用该方法。
@Service
public class OrderService {
private UserService userService;
@Autowired
public OrderService(UserService userService) {
this.userService = userService;
}
public OrderService(UserService userService, UserService userService1) {
this.userService = userService;
}
}