2013-10-14 12 views
23

Buduję nową aplikację, która konfiguruje wiosnę poprzez konfigurację java zamiast xml. Ta aplikacja jest zależna od modułu, który używa konfiguracji stylu xml. Kiedy próbuję uruchomić mój i aplikację, pojawia się następujący błąd:Mieszanie xml i java config ze sprężyną

No qualifying bean of type [com.myModule.myServiceImp] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

Ten fasoli powinny być deklarowane są w module za applicationContext.xml. Jaki jest właściwy sposób na radzenie sobie z tym? Próbowałem po prostu dodanie go jak ja, gdybym był sznurka kontekstów aplikacji razem w aplikacji web.xml:

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:com/myModule/appbase-context.xml 
      com.myApp.AppConfig 
     </param-value> 
    </context-param> 

Ale nadal mam ten sam błąd. Jaki jest właściwy sposób na zrobienie tego?

Odpowiedz

44

W swojej klasie konfiguracji można zaimportować konfigurację XML za pomocą adnotacji @ImportResource.

coś takiego:

@Configuration 
@ImportResource({"classpath:appbase-context.xml"}) 
public class AppConfig { 
    // @Bean definitions here... 
} 

Pamiętaj, że gdy używasz konfiguracji Java Wiosny, trzeba określić dodatkowy context-param który mówi klasę używaną do kontekstu aplikacji:

<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
     org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 
+0

I dostałem już drugą część, ale dzięki za przypomnienie. Co się tyczy pliku context.xml, czy po prostu muszę go zaimportować, a resztę zrobi dla mnie? Czy muszę go jakoś "uruchomić"? –

+1

Gdy 'ApplicationContext' ładuje ładunek klasy' @ Configuration', skanuje tę adnotację i automatycznie ją ładuje. –

+1

@ImportResource uruchomi go. –

Powiązane problemy