Я прочитал много статей о принципе DI в Spring Framework, но я все еще не понимаю, как разрешить циклическую зависимость в следующем случае:
Класс сущности
class Thread {
...
String status;
}
class Reply {
Thread thread;
String status;
...
}
Сервисный уровень для обработки CRUD этих 2 объектов
class ThreadService {
@Autowired private ReplyService replySvc;
public void suspend (Thread t) {
t.setStatus("suspended");
replySvc.getReplies(t).forEach(r -> {
r.setStatus("suspended");
replySvc.update(r);});
dao.save(t);
}
public void update(Thread t) {
...
dao.save(t);
}
...
}
class ReplyService {
@Autowired private ThreadService threadSvc;
public Reply create(...) {
thread.setStatus("replied");
threadSvc.update(thread);
...
return reply;
}
public List<Reply> getReplies(Thread t) {
...
return replies;
}
public void update(Reply r) {
...
dao.save(r);
}
}
Обе службы включают вызов обновления другой службы для обновления соответствующей сущности.Если я хотел бы применить принцип DI, что я должен изменить?