вторник, 15 июля 2008 г.

Тестируем Spring-приложение с помощью JUnit


В рамках разработки своей социальной сети решил освоить такую замечательную вещь как юнит-тесты. Точнее не столько освоить (с концепцией юнит-тестирования и базисом использования JUnit я знаком), сколько научиться повсеместно применять для тестирования многоуровневого Spring-приложения (DAO, сервисы, страницы и компоненты веб-интерфейса).

Соответственно в рамках данной задачи можно выделить такую проблему, как поднятие контекста Spring-приложения, т.е. создание всех бинов и естественно инъекцию зависимостей в них. После этого тестирующему коду должны стать доступны все необходимые зависимости, которые он и должен протестировать.

суббота, 12 июля 2008 г.

Совместное использование Tapestry и Spring


Давно задумывал написать что-то полезное для блоггеров и вконце-концов родилась идея конечно же социальной сети. Да, да, можете ругать за очередной велосипед, но как говорится у своего велосипеда колеса круглее. Собственно вопрос на чем реализовывать особо не стоял, т.к. решено было реализовывать на Java, заодно и получить опыт проектирования с нуля пусть не очень сложного, но все же J2EE приложения. Единственная проблема, которую я сейчас вижу это проблема последующего развертывания - нужно будет выбрать java-хостинг (скорее всего буржуйский) и как-то залить туда приложение. Впрочем проблему деплоя на виртуальный хостинг я еще опишу.

Впрочем выбор Java в качестве платформы для реализации приложения ставит перед нами еще одну проблему выбора - проблему выбора библиотек и фреймворков. Так как я имею опыт работы с Tapestry (не сильно большой, но все же) и этот опыт положительный, для реализации веб-части я выбрал именно данный фреймворк. Tapestry основан на IoC-контейнере Hivemind, но я отказался от его использования в пользу более мощного Spring. Почему Spring, а не например Guice? Потому что Spring позволяет не изобретать велосипед - определение источников данных, подключение Hibernate, AOP, управление транзакциями - это все есть в Spring (точно так же как и возможность определения Generic DAO, интерцепторов и многих других вкусностей). Собственно разобраться со Spring это тоже одна из целей моего проекта.

Так же не маловажную роль сыграл тот факт, что Spring поддерживается Tapestry "из коробки". А вот о том, как подключить Spring к Tapestry и инъектить эти бины на страницы и в компоненты, мы и поговорим.