Nano Hash - криптовалюты, майнинг, программирование

Как вводить ресурсы в bean-компоненты EJB3 с помощью Spring 2.5?

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


Ответы:


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)
public class MyFacadeEJB implements MyFacadeLocal {

    // automatically injected with a matching Spring bean
    @Autowired
    private MyComponent myComp;

    // for business method, delegate to POJO service impl.
    public String myFacadeMethod(...) {
        return myComp.myMethod(...);
    }
    ...
}

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

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

Смотрите также

15.08.2010
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..