1️⃣ 问题描述
在@PostConstruct
方法下获取 ApplicationContext
出现空指针异常,排查发现是调用的时候还未初始化 ApplicationContext
对象
2️⃣ 解决方式
- 使用@DependsOn
- @DependsOn注解表示一个Bean的初始化依赖于其他Bean。
- 如果一个Bean上使用了@DependsOn注解,则Spring容器在初始化该Bean之前,会先初始化该Bean所依赖的其他Bean。
- 例如,如果有一个UserServiceImpl类,它依赖于UserDaoImpl类,则可以在UserServiceImpl类上添加@DependsOn注解,并指定UserDaoImpl类的名称,如下所示:
@Service
@DependsOn("userDaoImpl")
public class UserServiceImpl implements UserService {
// ...
}
这样,Spring容器在初始化UserServiceImpl类之前,会先初始化userDaoImpl类。