我有两个班级:
@Component
public class Cache {
@Autowired
private UserService userService;
@PostConstruct
public void init() {
userService.doSth();
}
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private Cache cache;
@Autowired
private UserRepository repository;
@Override
public void doSth() {
repository.doSth();
}
}
如果我想部署我的应用程序,我会得到以下异常: org.springframework.beans.factory.BeanCreationException:创建名为'cache'的bean时出错:init方法的调用失败
UserServiceImpl中的所有自动连接字段均为空。
如果我从我的服务中删除了@Autowired私有缓存部分,那么它可以正常工作。
有什么想法吗?
答案 0 :(得分:0)
这是PostConstruct的定义。
PostConstruct注释用于需要的方法 在完成依赖注入以执行任何操作之后执行 初始化。必须在放入类之前调用此方法 投入服务
在您的流程中,我相信您正在等待缓存与userService一起自动装配,并且您的用户服务正在等待缓存自动装配。我想这有点造成依赖问题。您可能必须重新排列逻辑以避免这种依赖性。由于我不知道你的完整流程,我可能无法建议代码替代方案,但这应该给你一个要点,为什么它会发生。