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