Надеюсь, не слишком поздно в этом обсуждении:
Но вот как я это вижу.
Прежде всего мне нравятся идеи (композиты, миксины, сборки), лежащие в основе Qi4j, но меня сдерживает сложность его использования.
Концепции должны быть частью более широкого зонтика, такого как язык (например, Java), чем фреймворк, и должны быть более простыми в использовании.
Я столкнулся с проблемой 2 года назад, из-за чего мне было жаль, что у меня тогда не было такого.
Я хотел 3 разных поведения, которые можно было бы использовать на множестве бинов. Некоторые бобы использовали их все другие, любое сочетание двух. Я не хотел собирать их всех вместе в классе, потому что это не имело смысла. С другой стороны, я был ограничен тем фактом, что я не мог иметь множественное наследование. Очевидное решение: использовать интерфейс; что означает реализовать вещь, которая много раз.
Я не забываю жаловаться коллеге на тот факт, что надеюсь, что у меня был способ обеспечить реализацию по умолчанию для интерфейса. Для меня это простая концепция ОО, которая позволяет более рационально использовать поведение. И если это тот случай, когда вам нужно что-то отличное от реализации по умолчанию, чем реализовать это. Это имело бы больше смысла и не нарушало бы никакого естественного закона, который я вижу.
Итак, чтобы ответить на ваш вопрос, я думаю, что концепции этого Qi4j позволяют вам мыслить ОО более чистым способом, где Spring более структурный и даже не сопоставим концептуально. Вы можете думать о инъекции зависимости, не думать весной и думать Qi4j, а не думать о глубокой инъекции.