2 Stimmen

Frühling Auto-Verdrahtung

Angenommen, ich habe zwei Klassen Circle und Rectangle, die eine Schnittstelle namens Shape implementieren.
Und ich habe die folgende Klasse:

public class ObjectFactory {
    @Autowired
    @Qualifier("circle")
    Shape shape;
.......
.......
.......
}

Was ich tun möchte, ist den @Qualifier zu entfernen und die Automatische Verkabelung von einer Bedingung abhängig zu machen (zum Beispiel, wenn die Bedingung wahr ist, fügen Sie Circle ein, wenn die Bedingung falsch ist, fügen Sie das Rechteck ein) oder die Verkabelung von einer Namenskonvention abhängig zu machen.
Gibt es eine Möglichkeit, das zu tun?

Lassen Sie mich erklären, wenn ich die @Qualifier-Anmerkung entferne, werde ich folgende Ausnahme erhalten:

org.springframework.beans.factory.NoSuchBeanDefinitionException:
Keine eindeutige Bean des Typs [com.app.objects.Shape] ist definiert:
erwartete einzelne übereinstimmende Bean, aber gefunden 2: [circle, rectangle]

Gibt es eine Möglichkeit, diese Ausnahme programmgesteuert zu behandeln, um eine bedingungsabhängige automatische Verkabelung zu haben?

1voto

Bozho Punkte 570413

Sie können SpEL in @Resource verwenden, möglicherweise können Sie es auch in @Qualifier verwenden.

Aber normalerweise kann eine solche Logik in einem FactoryBean platziert werden, wo Sie entscheiden können, welche Instanz zurückgegeben werden soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X