Что-то вроде подключения EJB в Spring для не EJB
-
20-09-2019 - |
Вопрос
Недавно я заметил, что Spring может подключить мой ejb за меня, если я аннотирую ejb с помощью @Interceptors(SpringBeanAutowiringInterceptor.class).Я никогда этого не делал, поэтому не знаю подробностей.
Мне было интересно, есть ли способ заставить это работать с другими видами bean-компонентов, например, с аннотированными @WebService.
В настоящий момент в моих классах веб-сервисов (поскольку ими управляет сервер приложений) мне приходится загружать зависимости из BeanFactory, и поэтому я бы предпочел, чтобы они были автоматически подключены.
Я знаю, что мог бы использовать аннотацию @Configurable, но мне не особенно хочется указывать агент на виртуальной машине.
Это возможно?
Решение
И снова Spring подумала об этом варианте использования и учла его!
Проблема в том, что @WebService не является весна аннотация, это ДЖАКС-WS аннотация и, следовательно, классы, которые аннотированы с помощью @WebService и должны быть представлены как веб-службы, не управляются Spring, но их жизненный цикл управляется JAX-WS.
Способ обработки этого случая — расширить управляемый компонент JAX-WS org.springframework.web.context.support.SpringBeanAutowiringSupport — это позволит, например, аннотации @Autowire работать в этом компоненте.видеть здесь Чтобы получить больше информации
Другие советы
Да, конечно.В Spring есть @WebService, @Repository, @Controller, @Service, @Endpoint и другие аннотации.Вот пример.