4.1.2. Использование бинов клиентского уровня
Теперь давайте немного усложним задачу из предыдущего раздела. Допустим, требуется вызывать расчет из двух экранов: и из браузера, и из редактора. Чтобы не дублировать код, нужно извлечь код из контроллера и поместить в некоторое общедоступное место. Это может быть управляемый бин клиентского уровня.
Управляемый бин - это класс с аннотацией @Component
. Он может быть инжектирован в другие бины и контроллеры экранов, или получен с помощью статического метода AppBeans.get()
. Если класс бина реализует некоторый интерфейс, то к нему можно обращаться через этот интерфейс.
Имейте в виду, что для того чтобы бин был доступен для контроллеров экранов, он должен располагаться в одном из следующих модулей: global, gui или web вашего проекта. В случае global, бин будет также доступен на среднем слое.
См. кнопку Calculate discount на экранах браузера и редактора в демо-приложении, и реализацию:
-
CustomerBrowse.java - контроллер браузера.
-
CustomerEdit.java - контроллер редактора.
-
DiscountCalculator.java - бин расчета скидок. Он использует DataManager для загрузки списка заказов данного заказчика из базы данных.