Для создания управляемого бина достаточно добавить классу 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 используется во всех стандартных блоках приложения.

