27 февраля, 2008

Разобравшись со всеми навалившимися делами и задачами, спешу опубликовать 3-ю завершающую статью из серии “Разработка веб-приложений на Spring”, которая полностью посвящается непосредственно реализации поставленной задачи в предыдущих статьях: Разработка веб-приложений на Spring. Часть 1 (Проектирование), Разработка веб-приложений на Spring. Часть 1 (Конфигурирование).

В этой статье нам предстоит сделать:

  • Сервис и DAO для работы с данными
  • Контроллер обработки формы
  • Валидатор формы
  • JSP страницу

Одним словом - ерунда осталась :)

Продолжить ‘Разработка веб-приложений на Spring. Часть 3 (Реализация)’

6 февраля, 2008

В предыдущей статье мы занимались проектированием будущего приложения на Spring. Определили его цели, структуру, а также рассмотрели основные компоненты. В качестве примера используем всё тот же AllOfRss.com.

В данной статье я рассмотрю конфигурацию нашего приложения. В процессе будут созданы все необходимые конфигурационные файлы для его полноценного функционирования.
Для начала откроем Eclipse и создадим новый проект (File->New->Web Project), также рекомендую установить плагин для более комфортной работы с фреймворком Spring - Spring IDE Plugin. В процессе создания проекта, Eclipse попросит указать название вашей “Web root folder” (по умолчанию стоит - WebRoot), я обычно указываю - web, а также J2EE Specification Level, отметьте - Java EE 5.0 (если, конечно, вы используете Java 5). Остальное пусть будет без изменений.

Веб дескриптор

Как и в любом другом веб-приложении на Java всё начинается с конфигурации web.xml (web(WebRoot)/WEB-INF/web.xml).

Для начала установим путь к осноному конфигу Spring.

web.xml

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/allofrss-servlet.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Сравнительно с другими веб-приложениям на Java, приложение на Spring не отличается особой оригинальностью поскольку здесь тоже всё работает через сервлеты, правда сервлет здесь будет всего один. DispatcherServlet главный сервлет в приложении на Spring. Он выполняет роль “гейтвея” входящих запросов, перенаправляя вызовы “внутрь” системы (в науке это называется паттерном Front Controller).

Продолжить ‘Разработка веб-приложений на Spring. Часть 2 (Конфигурация)’

21 января, 2008

В предыдущей статье я проводил обзор фреймворка Spring с целью ознакомить читателей с его общим устройством.

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

Итак, представим, что основная цель - это на протяжении всей серии статей получить базовые знания и представление необходимые для конструирования и разработки веб-приложений на Spring. В качестве учебного примера возьмём страницу инвайтов для моего проекта AllOfRSS.com. Задача: создать страницу, где пользователи могут оставлять свои e-mail для получения в будущем приглашений на тестирование проекта, а также страницу о проекте.

Я специально не привожу в качестве примера сложных архитектурных решений, алгоритмов и функциональных решений, так-как честно считаю, что данного примера достаточно для формирования общего представления и знаний для того, чтобы начать пробовать использовать Spring самостоятельно. Главное дождаться и прочитать остальные статьи из серии.. :)
Продолжить ‘Разработка веб-приложений на Spring. Часть 1 (Проектирование)’

11 января, 2008

Эта статья является вводной частью к серии статей о создании веб-приложения с использованием Java фреймворка Spring. Тем, кто уже знаком с этим фреймворком статья будет мало полезной, в основном это для тех, кто ничего не знает о Spring или же только слышал и собирался в будущем попробовать.

Spring - это фреймворк объединяющий в себе достаточно много полезной функциональности: управление транзакциями, удалённый доступ к логике приложения используя RMI или веб-сервисы, множество возможностей для хранения ваших данных в БД, полнофункциональный MVC-фреймворк, прозрачную интеграцию AOP в приложении, интеграцию с другими известными фреймворками. Основным преимуществом фреймворка является компонентная архитектура, которая позволяет выборочно использовать любой из компонентов, в тоже время предоставляя связанный фреймворк для разработки J2EE приложений.

Архитектура фреймворка выглядит так:

Модульная архитектура фреймворка Spring

Каждый из этих компонентов может использоваться независимо или же в связке с другими. Ниже приведено общее описание функциональности каждого из них:

  • IoC контейнер. Основная часть фреймворка обеспечивающая базовую функциональность.
  • Spring Context. Spring контекст - это конфиогурационный файл предоставляющий контекстную информацию приложения, такую как: описание базнес-объектов в приложении, JNDI русурсы, EJB, e-mail, интернационализацию, валидацию.
  • Spring AOP. Данный модуль интегрирует аспектно-ориентированное программирование непосредственно в фреймворк, используя его конфигурационные возможности. В результате, вы можете применить AOP к любому управляемому фреймворком объекту вашего приложения. Spring AOP предоставляет поддержку управления транзакциями для объектов Spring-приложения.
  • Spring DAO. Предоставляет абстрактный слой для поддержки DAO. Также, содержит в себе полноценную иерархию эксепшенов для управления ошибками, возникающими при работе с различными базами данных.
  • Spring ORM. Включает в себя набор различных фреймворков, для обеспечения поддержки ORM (Object Relational Mapping) в приложении, а именно: JDO, интеграцию Hibernate и iBatis.
  • Spring Web Module. Предоставляет контекс для web-based приложений. Поддерживает интеграцию с Struts.
  • Spring MVC Framework. Полноценная реализация MVC паттерна для разработки веб-приложений.

Из личного опыта могу сказать, что использовал Spring в 3-х крупных проектах. Негативных отзывов нет, есть только положительные. Благодаря Inversion of Control в приложение можно подключить любой другой фреймворк или билиотеку без особого труда. Конфигурируется всё очень просто, отличная поддержка транзакций благодаря модулю AOP (Spring сам заботится о целостности данных, автоматически выполняя commit и rollback, основываясь на эксепшенах). Простая и удобная реализация MVC.

Хорошие примеры использования Spring: FeedBurner, DZone, LinkedIn.