2013-10-14 9 views
23

Sto costruendo una nuova applicazione che configura Spring tramite una java config piuttosto che xml. Questa app dipende da un modulo che utilizza la configurazione di stile xml. Quando provo e lanciare la mia app, ottengo il seguente errore:Miscelazione di xml e java config con molla

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)} 

Questo bean devono essere dichiarati nella applicationContext.xml del modulo. Qual è il modo corretto per gestire questo? Ho provato semplicemente aggiungendolo come avrei fatto se fossi stato tesatura contesti applicativi insieme in web.xml della app:

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

Ma ho ancora ottenuto lo stesso errore. Qual è il modo corretto per farlo?

risposta

44

Nella classe di configurazione, è possibile importare la configurazione xml tramite l'annotazione @ImportResource.

Qualcosa di simile a questo:

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

Ricordate, quando si utilizza Configurazione Java di primavera, è necessario specificare un ulteriore context-param che dice la classe da utilizzare per il contesto applicativo:

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

I ho già ricevuto la seconda parte, ma grazie per il promemoria. Per quanto riguarda il context.xml, devo solo importarlo e fa il resto per me? O devo "gestirlo" in qualche modo? –

+1

Quando 'ApplicationContext' sta caricando il carico della classe' @ Configuration', eseguirà la scansione di questa annotazione e la caricherà automaticamente. –

+1

@ImportResource lo eseguirà. –

Problemi correlati