Я предполагаю, что ваши реализации IFarm являются модельными классами.Не рекомендуется иметь хранилище внутри модели.Вам следует подумать о том, чтобы перенести создание различных реализаций IFarm в FarmRepo.
Если реализации IFarm представляют собой какие-то классы обслуживания, которые управляют бизнес-логикой, то вам следует разрешить Spring обработать их, внедрив в них экземпляр FarmRepo.В этом случае вам лучше рассмотреть возможность использования абстрактного класса, чем использования IFarm, потому что FarmRepo является распространенной зависимостью между ними.
Нет ничего плохого в использовании простого метода фабрики для создания экземпляра требуемого типа времени выполнения, если это требуется, это нужно где-то сделать, это поможет вам получить правильный дизайн с точки зрения OCP (принцип открытого закрытия), предотвращая изменение поведения в зависимости от параметра типа, скорее вы используете полиморфизм.