2016-08-22 2 views
0

Ich habe folgendes Frühjahr Annotation-basierte Konfiguration:Abhängigkeit Inject eine Bohne in andere Verwendung Anmerkung

@Bean 
public MarshallingMessageConverter marshallingMessageConverter() { 
    return new MarshallingMessageConverter(); 
} 
@Bean 
public Jaxb2Marshaller jaxb2Marshaller() { 
    return new Jaxb2Marshaller(); 
} 

Ich brauche jaxb2Marshaller-marshallingMessageConverter mit Setter basierend Injektion zu injizieren, bevor marshallingMessageConverter durch Feder initialisiert. Nach viel Googlen kann diese Art von Szenario immer noch nicht finden. Bitte helfen Sie !!

UPDATE: Ich habe keinen Zugriff auf beide Klassen, da sie in einer JAR-Datei sind. Als ich sie in einer dritten Klasse etwas Autowire wie:

@Autorwired MarshallingMessageConverter converter; //I need something like @Autorwired(setMarshaller = jaxb2Marshaller) where setMarshaller is the setter inside `MarshallingMessageConverter` 

@Autowired Jaxb2Marshaller marshaller; 
+0

Frühling mehr Möglichkeiten zu erreichen IOC hat, Anmerkung Autowired mit im Consumer ist mein Favorit, versuchen Sie (at) Autowired private Jaxb2Marshaller jaxb2Marshaller. – Tiina

Antwort

0

Können Sie die marshaller an den Konverter Konstruktor übergeben? Wenn ja, können Sie die autowired verwenden, um den Einweiser zu erstellen und dann in der Methode kommentierte mit @Bean Sie in dem Konstruktor übergeben:

@Autowired Jaxb2Marshaller marshaller; 

@Bean 
public MarshallingMessageConverter marshallingMessageConverter() { 
    return new MarshallingMessageConverter(marshaller); 
} 
+0

Seine Setter-basierte Injektion. Ich kann "new MarshallingMessageConverter (Marshaller)" nicht aufrufen. Außerdem, wenn ich einen solchen Konstruktor hätte, wäre es nicht möglich, zu der Zeit, wenn ich die AutoWired-Instanz des Marshaller-Spring-Kontexts bekommen würde, initialisiert zu werden und ich möchte, dass MarshallingMessageConverter diese Instanz davor hat. – maximus335

+0

Ich habe keine Anmerkung dafür gefunden. Es ist möglich, den Marshaller über XML zu übergeben oder das von @dunni veröffentlichte Beispiel zu verwenden. Wenn das MarshallingMessageConverter-Bean über XML deklariert werden kann, legen Sie den ' fest. –

+0

Ich möchte genau nur über Annotation. Gibt es einen Weg dafür? – maximus335

0
@Bean 
public MarshallingMessageConverter marshallingMessageConverter(Jaxb2Marshaller marshaller) { 
    MarshallingMessageConverter converter = new MarshallingMessageConverter(); 
    converter.whatEverMethodCallIsNeeded(marshaller); 
    return converter; 
} 
Verwandte Themen