Главная » Spring » Определение  экспортируемых операций и атрибутов с помощью интерфейсов Spring

0

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

Например, предположим, что в приложении определен следую- щий интерфейс HomeControllerManagedOperations:

package   com.habuma.spitter.jmx;

public interface HomeControllerManagedOperations { int     getSpittlesPerPage();

void setSpittlesPerPage(int spittlesPerPage);

}

Он определяет методы setSpittlesPerPage() и getSpittlesPerPage как экспортируемые операции. И снова, так как эти методы являются методами доступа к свойству, их экспортирование косвенно приве- дет к экспортированию свойства spittlesPerPage. Чтобы задейство- вать этот сборщик информации, достаточно просто использовать его вместо сборщика со списком методов:

<bean  id="assembler"

class="org.springframework.jmx.export.assembler.

➥InterfaceBasedMBeanInfoAssembler" p:managedInterfaces=

"com.habuma.spitter.jmx.HomeControllerManagedOperations"

/>

Свойство managedInterfaces определяет список интерфейсов, ко- торые будут играть роль интерфейсов управляемых компонентов MBean. В данном примере указан единственный интерфейс HomeCo ntrollerManagedOperations.

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

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

Однако так или иначе экспортируемые операции должны быть объявлены где-то в конфигурации Spring или в интерфейсе. Кроме того, объявление экспортируемых операций ведет к дублированию кода – имена методов повторяются в определении интерфейса или в конфигурации контекста Spring, и в программном коде реализа- ции. Это повторение необходимо исключительно для MBeanExporter.

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

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии