Ссылку на бин можно получить с помощью инжекции или класса AppBeans
. В качестве примера использования бина рассмотрим реализацию сервиса OrderService
, делегирующего выполнение бину OrderWorker
:
package com.sample.sales.core; import com.haulmont.cuba.core.Persistence; import com.sample.sales.entity.Order; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.inject.Inject; @Service(OrderService.NAME) public class OrderServiceBean implements OrderService { @Inject protected Persistence persistence; @Inject protected OrderWorker orderWorker; @Transactional @Override public BigDecimal calculateTotals(Order order) { Order entity = persistence.getEntityManager().merge(order); orderWorker.calculateTotals(entity); } }
В данном примере сервис стартует транзакцию, вносит полученный с клиентского уровня экземпляр сущности в персистентный контекст, и передает управление бину OrderWorker
, который и содержит основную бизнес-логику.