Мой текущий проект использует Spring, и наш архитектор решил разрешить Spring управлять объектами Services, Repositories и Factory, но НЕ объектами домена. Мы внимательно следим за дизайном, ориентированным на предметную область. Причина, по которой не используется пружина для доменных объектов, заключается в том, что пружина допускает только статическое внедрение зависимостей. Под внедрением статических зависимостей я подразумеваю, что зависимости указываются в конфигурации xml и они «замораживаются».
Возможно, я ошибаюсь, но в настоящее время я понимаю, что, хотя мой домен использует только интерфейсы для взаимодействия с объектами, но конфигурация Spring xml заставляет меня указывать конкретную зависимость. следовательно, все конкретные зависимости должны быть разрешены во время развертывания. Иногда это неосуществимо. Большинство наших сценариев использования основаны на внедрении определенного типа на основе данных времени выполнения или сообщения, полученного от конечного пользователя.
Большая часть нашего дизайна соответствует шаблону команд. следовательно, когда мы получаем команду, мы хотели бы построить нашу модель предметной области и на основе данных, полученных от команды, мы внедряем определенный набор типов в наш совокупный корневой объект. Следовательно, из-за отсутствия у Spring возможности построить модель предметной области на основе данных времени выполнения, мы вынуждены использовать статические фабричные методы, компоновщики и фабричные шаблоны.
Может кто-нибудь посоветовать, если у пружины проблема с вышеуказанным сценарием?
Я мог бы использовать AOP для внедрения зависимостей, но тогда я не использую инфраструктуру Spring.