Извините за долгий ответ.
А можете пример привести?
Я на всякий случай попробую конкретизировать на примере, что хочется получить:
Описание:
Приходит сообщение в котором есть информация о товаре (сущность Product) и его модели (сущность ProductModel). При этом связь между сущностями один ко многим (у товара может быть только одна модель). По результатам обработки сообщения мы должны создать сущности Product и ProductModel и записать их в базу (при этом в сущности Product должна быть ссылка на ProductModel). То есть создание запись в БД Product зависит от создания ProductModel. В этом примере две сущности, на деле их больше и зависимостей больше.
Цель:
Хочется написать обработчик в котором я могу сделать условно следующий код (т.е. максимально упростить дальнейшее расширение функционала):
@Autowired
private List<Handlers> handlers;
public void process(Message message){
handlers.forEach(h -> h.handle(message));
}
Надо понимать, что я не пытаюсь привести код к такому - это просто пример. Я хочу максимально разделить ответственность по созданию сущностей по разным handler, чтобы упростить тестирование. Т.е. уйти от написания в одном методе кода вида:
Product product = new Product();
ProductModel productModel = new ProductModel;
product.model = productModel;
...
...
...
В чем проблема:
Мне в процессе выполнения handler в сущности нужно добавлять ссылки на другие сущности. Т.е. при создании Product нужно указать ссылку на ProductModel. Получается, что нужен либо формировать каким-то образом порядок выполнения handler (в голове есть DependsOn, но это повысит связность как по мне), либо придумывать какую-то пост обработку создания сущностей, но это тоже будет завязано на конкретный кейс получается.
Возможно я загоняюсь по пусту, но не могу придумать как сделать менее связанно и легко расширяемо :)