2012-11-06 16 views
28

Ho un progetto in cui ho bisogno di bootstrap @Configuration classi java-config nella configurazione XML.Come importare la classe Java-config in XML-config in modo che entrambi i contesti abbiano i bean?

Per fare ciò, sto leggendo che devo anche includere la seguente definizione di bean (insieme alle definizioni dei bean delle classi annotate con @Configuration).

<bean class="org.springframework.config.java.process.ConfigurationPostProcessor" /> 

Ma, mi finire per ricevere il seguente errore:

Caused by: java.lang.ClassNotFoundException: org.springframework.config.java.process.ConfigurationPostProcessor 

Devo presumere che mi manca un barattolo da qualche parte, ma le mie varie ricerche sul Web non ha provocato ancora una risposta. Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

EDIT: Evidentemente, stavo leggendo la vecchia documentazione, che non è più attuale. Lasciami fare il backup. Il mio progetto contiene una vecchia configurazione basata su XML. Il codice più recente utilizza tutti "Java-config". Detto questo, i contesti sono apparentemente completamente separati. Mi piacerebbe 'importare' una classe java-config nella configurazione XML, in modo che entrambi i contesti abbiano quei particolari bean. Qualcuno sa come posso farlo?

risposta

54

Questo in realtà ha finito per essere abbastanza semplice. Per ottenere una definizione di Java-config in xml-config, è sufficiente definire la classe Java-config come bean all'interno di XML-config. Non ci sono barattoli in più necessari.

@Configuration 
public class SomeJavaConfig { 

    @bean 
    ... [bean definition] 
} 

all'interno di XML-config, si definisce questa classe come un bean.

<!-- needed to pick up the annotated java-config --> 
<context:annotation-config /> 

<!-- Importing java-config class, which are annotated with @Configuration --> 
<bean name="SomeJavaConfig" class="[fully qualified path].SomeJavaConfig" /> 

XML-config, che può essere parte di un contesto diverso, ha ora tutte le definizioni fagiolo definite all'interno della classe JavaConfig.

AGGIORNATO - per includere il commento di Alan Franzoni di seguito nella risposta.

+27

Sidenote: deve esistere anche nella configurazione XML, altrimenti il ​​javaconfig non sarà incluso. –

+0

se si definisce già ConfigurationPostProcessor nella propria configurazione XML, non necessario! –

+0

Il tag ha appena aggiunto tutte le molle PostProcessor per te. –

1

dovrebbero essere in:

spring-javaconfig-<version>.jar 
+6

Evidentemente, il vaso javaconfig a molla è stato decomposto. Doveva essere migrato in Spring Core nella versione 3.0. – Mostfoolish

Problemi correlati