Spring boobs
03 Oct 2016Шесть лет назад я писал энтерпрайзный проект на Spring framework.
Мы все считали, что Spring - это кровавый энтерпрайз.
Мы хотели избавиться от этого бойлерплейта.
Мы были молоды, мы были горячи, мы хотели перемен.
И понеслось!
В 2010 я попал в фирму Codeborne, в которой у нас появилась свобода делать проекты на всём, чём душа пожелает.
Моя душа желала много и разнообразно.
С тех пор я успел поделать проекты на:
- на Struts2 (Java),
- на Play 1 framework (Java),
- на Ruby (Sinatra),
- на Scala (Scalatra),
- на Groovy,
- на Python (Tornado framework),
- на Kotlin,
- на Ratpack,
- на Vert.x,
- и даже, прости господи, на PHP!
И что теперь
- Разочаровавшись из-за медленной компиляции Scala,
- помудохавшись со скриптами Groovy, которые ничерта не поддерживаются никакими IDE,
- поогрёбши багов с динамическим Питоном, у которого все библиотеки ломаются при малейшем апгрейде,
- натёрши мозоли на кнопках s, e, l, f - потому что в Python, сцуко, надо везде писать
self.
при вызове абсолютно любых методов! - поматерившись на Ruby, который влёгкую ломается из-за одной случайной строчки чёртового комментария в одной случайной чёртовой зависимости,
- и - не побоюсь этого слова - понатрахавшись в многочасовых ночных дебагах с многочисленными извращённейшими косяками Play framework,
я стал искать что-то стабильное.
Что-то, на что можно положиться.
Что-то, что просто работает и делает то, что мне надо.
И вот…
И я снова попробовал Spring framework.
Решил дать ему второй шанс.
И оказалось, что
- бойлерплейта в нём ничуть не больше, чем в Struts2.
- он умеет перегружать классы на лету гораздо лучше, чем Play framework.
- естественно, в нём всё логируется, записывается, загружается и читается из коробки. Без багов. Без косяков. Без неожиданностей. Без чёрной магии.
- в нём почти невозможно писать спагетти код, потому что архитектура почти заставляет тебя всё делать правильно: сервисы, репозитории, идеальный dependency injection - тут просто негде накосячить.
- в нём всё сделано для того, чтобы нам было легко писать автотесты.
- И юнит-тесты, и интеграционные. В одну команду - взлетает база данных, тестирует твой селект, умирает.
- И даже UI-тесты. В одну команду - взлетает приложение с БД, открывается браузер, всё прокликивается, умирает.
- и вопреки легендам, в нём не нужен никакой чёртов XML.
Кто-нибудь помнит, за что мы тогда не взлюбили Spring?
Короче
Может, это старость, но сейчас я готов сказать, что Spring framework - это лучший фреймворк на свете. Лучше всего того, что было создано после него.
Пойду пересмотрю “Москва слезам не верит”.