2016-07-27 6 views
0

Ich habe eine Schnittstelle sagen A, und fünf Implementierungen dafür A1, A2, A3, A4, A5 in dem gleichen Paket. Jetzt, wenn ich die Federanlegung starte, möchte ich je nach Autowirkung nur noch A1 A1, A2, A3, A4, A5 laden. Ich möchte nicht andere laden, da es die Anwendung schwer macht, wenn es viele Klassen wie diese gibt. Bitte erläutern Sie die mögliche Antwort.So laden Sie nur ausgewählte Klassen oder Beans in Spring

Antwort

1

@Qualifier

Angenommen, Sie folgenden Zusammenhang haben:

<bean id="a1_beanId" class="com.A1" > 
</bean> 

<bean id="a2_beanId" class="com.A2" > 
</bean> 

Sie haben qualifier zu verwenden A Schnittstelle mit der richtigen Realisierung autowire. Das Autowiren geschieht dann durch bean id.

@Autowired 
@Qualifier("a1_beanId") 
private A yourA1Bean; 

@Lazy

Um zu verhindern, Bohnen Kontext zum Frühling geladen Sie auf lazy mode mit Annotations @Lazy oder lazy-init="true" für xml config wechseln.

A träge initialisierten Bohne zeigt die IoC-Container, ob keine Bean-Instanz beim Start erstellt werden soll oder wenn es zuerst ist angefordert.

+0

Vielen Dank für Ihre Antwort, aber muy Frage ist über das Stoppen des Ladens von Klassen, die nicht autowired werden. – Rajdeep

+0

@Rajdeep, verbesserte ich meine Antwort –

+0

Wenn wir zu Lazy-Initialisierung verschieben, lädt noch Frühling alle Klassen, ich möchte nur das Laden von Klassen stoppen. – Rajdeep

Verwandte Themen