例如:下面的userService中属性admin的值,我们在初始化时需要从数据库中查询
@Component
public class UserService{
@Autowired
private OrderService orderService;
private User admin;
}
做法:
让这个bean实现InitializingBean接口,重写它的afterPropertiesSet方法,在这个方法中实现查询赋值的逻辑
@Component
public class UserService implements InitializingBean{
@Autowired
private OrderService orderService;
private User admin;
@Override
public void afterPropertiesSet() throws Exception {
// mysql--->User对象---->this.admin
// 从数据库中查询出User的admin属性
}
}
Spring底层原理:
调用初始化方法中,先判断这个bean有没有继承InitializingBean接口,然后对这个bean进行强制类型转换,转换为InitializingBean类型,再调用它的afterPropertiesSet()方法