Wstrzykiwanie zależności za pomocą Spring (adnotacje JSR 330) w produkcie WebSphere 7 nie działa
Mam aplikację korporacyjną zbudowaną z Java 6, Spring Framework 3.1.2 i Mule-ESB 3.3.0, wśród innych bibliotek niezwiązanych z tym pytaniem.
Nasze fasole i usługi są deklarowane@Named
i@Inject
Adnotacje JSR-330, odpowiednio do automatycznego skanowania komponentów i do wstrzykiwania zależności (brak EJB, tylko fasola usługowa). Po wdrożeniu w JBoss 4.2.3 (nasze środowisko testowe) wszystko działa dobrze. Jednak po wdrożeniu w produkcie WebSphere 7 adnotacje JSR-330 wydają się nie działać. Ziarna oznaczone@Named
po prostu nie są wykrywane.
Mogę zapewnić, że wszystko jest skonfigurowane poprawnie (ponieważ działa w JBoss). W szczególności<context:component-scan />
zawierabase-package
atrybut poprawnie zdefiniowany iscope-resolver
atrybut poprawnie skonfigurowany do użyciaJsr330ScopeMetadataResolver
(próbowaliśmy też bez niego).
Wiem, że WebSphere 7 (7.0.0.23) może nie obsługiwać tego rodzaju adnotacji. Jeszcze tego nie testuję@Component
i@Autowired
Odpowiedniki sprężynowe. Niestety bardzo chcielibyśmy używać adnotacji JSR 330, aby nasze klasy nie były bezpośrednio zależne od Springa, mimo że używamy Spring Framework pod maską.
Niemniej jednak, chociaż spędziłem jeden pełny dzień pracy szukając określonego stwierdzenia, że WebSphere 7 nie obsługuje adnotacji JSR 330, nie znalazłem dotąd niczego.
Co więcej, nie rozumiem, dlaczego to nie zadziałałoby, ponieważ zakładam, że Spring Framework wykonuje całą pracę, poprzez<context:component-scan />
dyrektywa wapplication-context.xml
plik.
Czy ktoś może wnieść trochę światła do tego problemu?
Czy istnieje sposób aktywacji wstrzykiwania zależności za pomocą adnotacji w produkcie WebSphere 7?
Jeśli wrócę z JSR 330@Named
/ @Inject
adnotacje do własnych wiosennych@Component
i@Autowired
czy to prawdopodobnie zadziała?
W desperackiej próbie mogę przedłużyć SpringaComponentScanBeanDefinitionParser
więc wykryje adnotacje JSR 330 nawet w WebSphere 7?
Jeśli nic nie działa, w końcu powrócę do zwykłej konfiguracji XML. Jest to jednak wysoce niepożądane, ponieważ w XML będą ręcznie konfigurowane setki fasoli.