Показаны сообщения с ярлыком Guice. Показать все сообщения
Показаны сообщения с ярлыком Guice. Показать все сообщения

пятница, 9 мая 2008 г.

Развивая тему Guice: прикручиваем Velocity с помощью Guice.


Данный пост написан не с целью развития холивара на тему, что лучше Velocity или JSP, но здесь я хочу продемонстрировать как можно подключать такой удобный шаблонный движок, как Velocity к приложению, построенному на базе Guice.

О том, что такое Velocity и многих аспектах его использования можно почитать на форуме программистов и конечно же официальной странице проекта.

пятница, 2 мая 2008 г.

Строим сервлеты на базе Guice


Компания google - основной разработчик IoC контейнера GUICE позиционирует его как легковесное решение для построения Java-приложений различных типов, в том числе и веб-приложений. Для этого существует пакет com.google.inject.servlet, о котором мы сегодня и поговорим.

Прежде всего хочу отметить тот факт, что снапшот guice-servlet в SVN и пакет, включенный в guice 1.0 отличаются - версия в SVN имеет более расширенный функционал. В частности - базовый сервлет, обеспечивающий инъекцию зависимостей и контекст-листенер, обеспечивающий подключение Guice.Injector. Поэтому для примеров в данном посте я использовал версию из SVN.

среда, 23 апреля 2008 г.

Пишем плагинную шину с использованием Guice


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

Сегодня мы поговорим о реализации примитивной плагинной шины с помощью IoC-контейнера от гугл - Guice. Реализация плагинной шины с помощью IoC-контейнера дает нам все преимущества паттерна Inversion Of Control. Мы легко можем реализовывать с использованием этого паттерна как базовые какие-то механизмы (API приложения, доступное плагинам), так и сами плагины, что очень удобно. Так-же использование Guice облегчает сам процесс подключения плагинов к системе, как именно - об этом поговорим чуть позже.

воскресенье, 6 апреля 2008 г.

Знакомимся: Guice - IoC контейнер от Google


Перед любым проектировщиком и/или разработчиком более-менее сложного приложения встает вопрос: "Как уменьшить связность кода?" Собственно, уже давно ни для кого не секрет, что излишняя связность кода приложения - верный путь к увеличению энтропии и сложности поддержки. Особенно, если код криво написан, что, к сожалению, не редкость.

Одним из наиболее популярных (на мой взгляд - лучших) способов уменьшения связности кода является использование паттерна Inversion Of Control (Инверсия управления). Очень часто данный паттерн описывают основным правилом Голливуда: "не звони мне, я сам тебе позвоню". При всей философичности данного описания оно является правильным.

Без философии же данный паттерн описывается следующим образом: взаимодействовать должны не реализации (классы), а абстракции (интерфейсы). Не должно быть такого (без фанатизма конечно же), когда класс зависит от класса. Классы должны зависить от интерфейсов. Возникает вопрос - когда создавать инстансы интерфейсов, ведь понятно, что в рантайме интерфейсов не будет, а будут классы. Так вот, вся прелесть IoC проявляется именно в этом. Вы в одном месте описываете правила, по которым будут созданы объекты для реализации интерфейсов. Остальное за вас сделает используемая IoC-подсистема, в частности - IoC-контейнер.