Java / Статьи / Главная страница
22-01-2008

Spring Framework - первые шаги (Конспект четвертый)

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

 

Конспект четветый : Application context

В предыдущих лекциях мы обсудили основопологающие принципы, заложенные в основу Spring Framework и определили каким образом фреймворк позоволяет поддерживать слабую связь между компонентами приложения. И теперь, прежде чем перейти к экспериментам с фреймворком, нам осталось разобраться, собственно, каким образом Spring связывает компоненты между собой.
Для начала, я предлагаю разобраться с термином, достаточно часто фигурирующем везде, где упоминается Spring - "контекст" (context).
Контекст – это среда, в которой существует объект. Давайте разберемся, что в нашем случае является средой, а что объектом. Объект - это разрабатываемая Вами компонента (bean), а среда – все остальные компоненты (beans), необходимые для жизненного цикла вашей компоненты. Например, контроллер, позволяющий отправить клиенту сообщение по почте, в данном случае является объектом, а сам мэйлер, логер, etc. – являются средой окружения.
Обратите внимание на то, что в реальном приложении каждая компонента (bean) может выступать, как в роли объекта, так и в роли среды. Таким образом, описание набора компанент (beans) и взаимосвязей между ними и является контекстом приложения (application context).

В конечном счете, для разработчика, использующего Spring Framework, Application Context представляет собой набор xml – файлов и аннотаций, описывающий компоненты (beans) и взаимосвязи между ними.
Если читатель помнит, во втором конспекте лекций, я создавал класс Framework, который жестко кодировал создание компонент и связей между ними. Сейчас пришло время, перейти к декларативному оформлению того же контекста. Итак, давайте рассмотрим пример конфигурационного файла для компонент из второй лекции:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
<bean id="registerFormController"
class="com.personality.examples.spring.ioc.RegisterFormControllerReadyForIoC">
<property name="mailService" ref="mailService" />
</bean>
<bean id="mailService"
class="com.personality.examples.spring.ioc.SmtpMailService" />
</beans>
Обратите внимание на то, что данный конфигурационный файл создает экземпляры двух бинов: registerFormController и mailService и устанавливает взаимосвязь между ними с помощью атрибута ref. Т.о. Spring Framework, обработав соответствующий конфигурационный файл, создаст экемпляр класса SmtpMailService, после чего создаст экземпляр RegisterFormControllerReadyForIoC и только затем установит между ними взаимосвязь (injection) соответвующего мейлера и контроллера. При этом используется нотация JavaBean (соответствие полей класса и методов setXXX(), getXXX()). Графически эта конфигурация будет выглядеть следующим образом:

Графическое изображения контекста приложения в среде Eclipse

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

Vyacheslav Yakovenko

Spring Framework - первые шаги (Конспект третий) :: Spring Framework - первые шаги (Конспект пятый)


Комментарии к статье "Spring Framework - первые шаги (Конспект четвертый)" (2)

виталий

11-03-2010 18-32 я не очень понял зачем нам устанавливать связь через sprint есть в вотором пример явным образовм package com.personality.examples.spring.ioc; publicclass Framework { publicstaticvoid main(String[] args) { MailService mailService = new SmtpMailService(); //здесь явно вызвали класс которые в дальнейшем обрабатывает функции в чем тут фреймворк я не понял RegisterFormControllerReadyForIoC controller = new RegisterFormControllerReadyForIoC(); controller.setMailService(mailService); controller.send(); } } т.к. я вижу тут ни каких связей не надо устанавливать и или покажи полностью что кого вызывает и писать xml за чем и каким образом он устанавливает связь между чем и чем и что он вызывает

RedMac

13-02-2008 17-57 Может кто знает: где это можно рисовать и сразу конвертить в xml? ЧТоб это всё ручками не писать?


Вам есть, что сказать?




  Введите код