Для создания управляемого бина достаточно добавить классу Java аннотацию @javax.annotation.ManagedBean
. Например:
package com.sample.sales.core; import com.sample.sales.entity.Order; import javax.annotation.ManagedBean; @ManagedBean(OrderWorker.NAME) public class OrderWorker { public static final String NAME = "sales_OrderWorker"; public void calculateTotals(Order order) { } }
Рекомендуется присваивать бину уникальное имя вида {имя_проекта}_{имя_класса}
, и определять его в константе NAME
.
Класс управляемого бина должен находиться внутри дерева пакетов с корнем, заданным в элементе context:component-scan
файла
spring.xml
. В нашем случае файл spring.xml
содержит элемент:
<context:component-scan base-package="com.sample.sales"/>
что означает, что поиск аннотированных бинов для данного блока приложения будет происходить начиная с пакета com.sample.sales
.
Если нужно обеспечить возможность подмены реализации, рекомендуется выделять бизнес-интерфейс бина, например, следующим образом:
package com.sample.sales.core; import com.sample.sales.entity.Order; public interface OrderWorker { String NAME = "sales_OrderWorker"; void calculateTotals(Order order); }
package com.sample.sales.core; import com.sample.sales.entity.Order; import javax.annotation.ManagedBean; @ManagedBean(OrderWorker.NAME) public class OrderWorkerBean implements OrderWorker { @Override public void calculateTotals(Order order) { } }
Управляемые бины можно создавать на любом уровне, так как контейнер Spring Framework используется во всех стандартных блоках приложения.