У меня есть корпоративное приложение, построенное на Java 6, Spring Framework 3.1.2 и Mule-ESB 3.3.0, среди других библиотек, не связанных с этим вопросом.
Все наши компоненты и службы объявляются с @Named
и @Inject
JSR-330, соответственно, для автоматического сканирования компонентов и для внедрения зависимостей (без EJB, только для служебных компонентов). При развертывании в JBoss 4.2.3 (наша тестовая среда) все работает отлично. Однако при развертывании в WebSphere 7 аннотации JSR-330, похоже, не работают. @Named
помеченные @Named
вообще не обнаруживаются.
Я могу заверить, что все настроено правильно (так как он работает в JBoss). В частности, <context:component-scan/>
правильно определил атрибут base-package
и правильно настроил атрибут scope-resolver
для использования Jsr330ScopeMetadataResolver
(мы пробовали и без него).
Я знаю, что WebSphere 7 (7.0.0.23) может не поддерживать аннотации такого рода. Я еще не протестировал его с @Component
и @Autowired
Spring. К сожалению, мы бы очень хотели использовать аннотации JSR 330, чтобы наши классы не зависели напрямую от Spring, даже если мы используем Spring Framework под капотом.
Тем не менее, хотя я потратил один полный рабочий день на поиски определенного заявления о том, что WebSphere 7 не поддерживает аннотации JSR 330, я пока ничего не нашел.
Кроме того, я не понимаю, почему это не сработает, поскольку я предполагаю, что Spring Framework - это тот, кто выполняет всю работу через директиву <context:component-scan/>
в файле application-context.xml
.
Кто-нибудь может пролить свет на этот вопрос?
Есть ли способ активировать внедрение зависимостей через аннотации в WebSphere 7?
Если я переключусь обратно с аннотаций @Named
/@Inject
JSR 330 на собственные Spring @Component
и @Autowired
, это может сработать?
В отчаянной попытке я могу расширить Spring ComponentScanBeanDefinitionParser
чтобы он обнаруживал аннотации JSR 330 даже в WebSphere 7?
Если ничего не работает, я в конечном итоге вернусь к простой конфигурации XML. Однако это крайне нежелательно, поскольку в XML будут вручную настроены сотни компонентов.