Spring в действии. Второе издание (Часть 1. Ядро Spring)

Craig Walls, Ryan Breidenbach, “Spring in Action. Second Edition (Part 1. Core Spring)”, public translation into English from English More about this translation.

Another translations: into Russian. Translate into another language.

Предисловие

Это было в 2005-ом году, 7 декабря. Я стоял у входа в большой конференц-зал отеля

в Майами, штат Флорида. Комната была наполнена разработчиками со всего

света, которые бросили отличные песчаные пляжи южной Флориды

ради единственной цели - поговорить о Spring

Что я могу сказать? Это была комната наполненная ботанами.

Чем жариться на солнце и заниматься серфингом, мы все собрались внутри чтобы греться в теплых лучах наших мониторов чтобы узнать

чуть больше о нашем любимом фреймворке от тех, кто знает его лучше чем мы.

В эту ночь, мы все ловили каждое слово создателя Spring

Рода Джонсона, когда он читал вступительную речь на конференции. Он говорил

об истоках Spring и его успешных применениях. Затем он пригласил несколько членов команды разработчиков

Spring на сцену чтобы представить новые фичи, которые будут

в следующей версии.

Вскоре после начала презентации Род сделал заявление, которое

сразу привлекло всеобщее внимание. Мы все ждали, что эти новые крутые фичи станут доступны

в Spring 1.3, предполагаемой новой версии Spring. К нашему удивлению,

Род сообщил нам, что следующей версии Spring будет не 1.3

а 2.0

Решение увеличить главную версию следующего релиза не

просто сделать. Такое действие говорит о существенном улучшении Spring. Если следующяя

версия Spring будет 2.0, то нам следует ожидать больших улучшений.

И на самом деле, спустя 10 месяцев, был выпущен Spring 2.0 с множеством новых

возможностей, включая:

- Упрощенную XML конфигурацию и возможность создания настраиваемых конфигурационных элементов

- Сильно упрощенные AOP и транзакции

- Поддержка аннотаций Java 5 для декларирования аспектов, транзакций и необходимых свойств бинов

- Возможность создания бинов из скриптов написанных на
JRuby, Groovy, или Bean-Shell

-Новые JDBC шаблоны для поддержки именованных параметров и особенностей Java 5

-Улучшенная поддержка JMS, включая асинхронное получение сообщений (методом создания управляемых сообщениями POJO [message-driven POJOs])

- Новая библиотека тегов JSP для связывания форм

- Несколько улучшений Соглашений по конфигурации, чтобы сократить множество требований XML для конфигурации Spring

- Поддержка Java Persistance API (JPA)

-Улучшенная работа с областями действия (scope), включая области request и session для бинов в web приложениях

-Возможность выполнения dependency injection для объектов которые не создаются Spring-ом (такие как объекты модели)

Род аргументировал, что если масса новых

введенных изменений не оправдывает переход к версии 2.0, то что вообще может

его оправдать?

Это еще не все. В дополнение к работе, проделанной над ядром Spring Framework

несколько интересных, относящихся к Spring проектов стоят на пути расширения

возможностей Spring. Среди них:

- Spring Web Flow, который основывается на Spring MVC и дает возможность разработки поточных web приложений

- XFire, для экспорта ваших Spring бинов как web-сервисы SOAP

- Spring-WS - для создания contract-first web- сервисов

- Spring Modules, который предоставляет (среди других вещей) декларативное кэширование и валидацию

- Direct Web Remoting (DWR) для Spring бинов с Ajax

- Lingo, дающий возможность асинхронного вызова методов удаленных бинов

Потом мне пришло в голову: если все эти нововведения в Spring не являются основания для второго

издания "Spring in Action", тогда что? Как оказалось, Маннинг

думал точто также.

И сейчас, больше года спустя, вот долгожданное обновление издания "Spring in Action",

которое покрывает многие новые возможности Spring 2.0. Для завершения этого мне понадобилось больше времени

чем планировалось, но я надеюсь что это стоило того чтобы ждать. Моя цель

для этого переиздания такая же как и для первой версии: поделиться радостью разработки в Spring.

Я надеюсь эта книга послужит улучшению вашего использования Spring.

Предисловие к первому изданию

Разработчики программного обеспечения должны обладать многими свойствами для того чтобы делать свое

ремесло хорошо. Первое, они должны быть хорошими аналитиками и уметь разрешать проблемы.

Основная роль разработчика - создать программное обеспечение которое решает проблемы бизнеса.

Это требует анализа требований клиента и дальнейшего успешного, креативного

решения.

Они должны быть также любознательны. События в индустрии программного обеспечения являются изменчивыми [are moving targets],

всегда меняются. Новые фреймворки, новые технологии, новые языки, и

новые методологии постоянно соединяются. Каждый новый инструмент, которым нужно

овладеть и добавить в свой инструментарий, позволяет разработчику сделать его или её работу

лучше и быстрее.

Далее самое желанное свойство из все, "лень". Вид лени

который побуждает разработчика трудиться усердно в поисках решения с наименьшими

усилиями. Именно с любопытством, хорошей порцией "лени", и всеми аналитическими возможностями

мы могли собрать двоих из нас вместе четыре года назад для

поиска новых способов разработки программного обеспечения.

Это было время когда программное обеспечение с открытым исходным кодом достигла критической массы в

Java сообществе. Тонны фреймворков с исходным кодом расцвели на ландшафте Java.

Для того чтобы выбрать нужный фрэймворк, вам нужно найти тот, который подходит вам на 80%

в базовой комплектации.

Даже если нужных возможностей нет в изначальной сборке, фрэймворк должен быть достаточно прост

для расширения в эту сторону.

Под расширением не подразумевалось латание дыр, что при некоторых вмешательствах было бы так безобразно, что вы бы потом чувствовали себя испчканым - имелось ввиду расширение в изящной форме.

Тут не о чем больше спрашивать, не так ли?

Первым из этих фреймворков, который получил быстрое признание в нашей команде, был Ant.

С самого начала, мы могли сказать, что Ant был создан неким разработчиком, который знал наши страдания при разработке приложений Java.

С этого момента, нет больше javac.

Нет больше CLASSPATH. Все это в простой (хотя иногда многословной) XML-конфигурации.

Ура! Жизнь (и разработка) на самом деле стала проще.

Чем дальше мы продвигались, начинали применять все больше инструментов.

Eclipse стал нашей интегрированной средой разработки. Log4J стал нашим (и всех остальных) инструментом логгирования.

А Lucene вытеснил коммерческие поисковые решения.
Каждое из этих инструментов

Каждый из этих инструментов соответствовал нашим необходимым требованиям, наряду с простотой использования, понимания и расширения.

Однако чего-то не хватало.

Эти замечательные инструменты были призваны помочь разработчикам программного обеспечения, как например Ant и Eclipse, или решали весьма специфические прикладные задачи, такие как поиск в случае с Lucene и логгирование в случае Log4J.

Ни один из них не был направлен на

удовлетворение потребностей в сердце корпоративных приложений: персистентность, транзакционность, и

интеграция с другими корпоративными средствами.

Все изменилось за последний год или около того, когда мы обнаружили выдающуюся корпоративную двойку

Spring и Hibernate.

Эти два фреймворка удовлетворили почти все наши требования на уровне доступа к данным.

Сперва мы приняли Hibernate. Это был наиболее интуитивный и функциональный инструмент объектно-реляционного связывания.

Ну а после принятия Spring мы и в самом деле убедились, что наш код стал выглядеть хорошо.

Инъекция зависимости (dependency injection) Spring позволяет избавиться от всех наших пользовательских фабрик в пользу конфигурирования.

В сущности, по этой причине мы впервые внедрили Spring в наши приложения.

Его внедрение позволило нам

Pages: ← previous Ctrl next

© ©2008 by Manning Publications Co. All rights reserved.

Original (English): Spring in Action. Second Edition (Part 1. Core Spring)

Translation: © zakov, anzory, TsikhanovichVU, viacheslav.t, shual, AntiOn, EgorSK, Olch, ykcyc, jandor, Morose, homa, Torw, oreh, red-valjok, C-est_la_vie .

translated.by crowd

Like this translation? Share it or bookmark!