Ответ 1
С точки зрения разработки веб-приложений существует только большая разница в подходе к архитектуре ваших приложений.
Django имеет тенденцию налагать множество ограничений и сильно зависит от фиксированного набора решений, которые предоставляются внутри компании. Что вы получаете от этого - соглашения и оптимизированный подход к тому, как вы разрабатываете свои приложения. Большинство рамочных решений работают для всех, а когда нет, у вас есть много возможностей для расширения или повторного использования определенных компонентов по-разному. Это работает так хорошо, что, действительно, как только вы увидели один хороший проект Django, вы все их видели.
Spring, с другой стороны, имеет тенденцию налагать как можно меньше ограничений. Помимо удовлетворения требований платформы Java EE, вы свободны в значительной степени подключать свое приложение так, как считаете нужным. Компоненты, которые вы пишете для обеспечения фактического поведения, должны быть так же слабо привязаны к самой структуре, и вы просто закончите использование определенных компонентов, предоставляемых Spring, чтобы управлять тем, как они обнаруживаются, подключаются, управляются и потребляются. Проблема в том, что вы можете настроить даже самый малый аспект приложения, а это означает, что вы принимаете множество решений, и каждое веб-приложение Spring будет уникальным.