Как ввести ресурсы в бобы EJB3 с Spring 2.5?

Если я создаю боб EJB3 (скажите, что сеансовый объект без сохранения состояния) в приложении с помощью Spring 2.5 для DI, как я должен ввести зависимости от Spring в боб, не связывая боб с Spring?

8
задан Pascal Thivent 15 August 2010 в 21:16
поделиться

1 ответ

Я не знаю, рассматриваете ли вы возможность применения перехватчика в качестве связки, но, насколько мне известно, это стандартный подход. Из Главы 18.Интеграция Enterprise Java Beans (EJB) документации:

18.3.2. Перехватчик внедрения EJB 3

Для сессионных компонентов EJB 3 и Бины, управляемые сообщениями, Spring предоставляет удобный перехватчик, решающий Аннотация Spring 2.5 @Autowired в классе компонентов EJB: org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor . Этот перехватчик может применяться через @Interceptors аннотация в классе компонента EJB, или через XML-файл привязки перехватчика элемент в развертывании EJB дескриптор.

 @Stateless
@Interceptors (SpringBeanAutowiringInterceptor.class)
открытый класс MyFacadeEJB реализует MyFacadeLocal {

 // автоматически вводится соответствующий компонент Spring
 @Autowired
частный MyComponent myComp;

 // для бизнес-метода делегировать сервису POJO impl.
public String myFacadeMethod (...) {
вернуть myComp.myMethod (...);
 }
 ...
}

SpringBeanAutowiringInterceptor , автор: по умолчанию получает целевые bean-компоненты из ContextSingletonBeanFactoryLocator , с контекстом, определенным в bean-компоненте файл определения с именем beanRefContext.xml . По умолчанию ожидается единственное определение контекста, которое получается по типу, а не по типу по имени. Однако, если вам нужно выбирать между несколькими контекстами определений, конкретный ключ локатора обязательный. Ключ локатора (т. Е. имя определения контекста в beanRefContext.xml ) может быть явно указано либо через отвергая getBeanFactoryLocatorKey метод в обычай SpringBeanAutowiringInterceptor подкласс.

Единственный известный мне вариант (расширение классов поддержки EJB 2.x) намного хуже с точки зрения связывания (и поэтому не отвечает на ваш вопрос).

См. Также

7
ответ дан 5 December 2019 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: