/ / Injizieren einer Abhängigkeit in eine Bibliotheksklasse, die nicht von spring verwaltet wird - java, spring, spring-boot, abhängigkeitspritze

Eine Abhängigkeit in eine Bibliotheksklasse einfügen, die nicht von Spring verwaltet wird - Java, Spring, Spring-Boot, Dependency-Injection

Ich bin ziemlich neu im Frühjahr oder in Abhängigkeitspritzen. Ich habe bereits eine abstrakte Klasse A in einer JAR-Datei erstellt, die nicht von Spring verwaltet wird.

Ich habe ein Projekt, das diese Klasse verwenden muss, und möchte meine Implementierungen der Abhängigkeit der Klasse A (beispielsweise Typ B) einfügen. Dieses Projekt verwendet Springboot.

Wie kann ich Abhängigkeiten vom Typ B in A injizieren? Ich habe folgendes versucht: 1. Erstellt eine Konfigurationsklasse (@Configuration) und fügt eine Methode getB () hinzu, die als @Bean kommentiert wurde und die ein Objekt des Typs B mithilfe meiner Implementierung von B zurückgibt.

@Bean
public B getB () {
return new MyB();
}

Antworten:

2 für die Antwort № 1

Wenn du spritzen willst B in A du kannst nicht. Schon seit A wird nicht von Spring verwaltet, der IOC-Container wird niemals etwas in eine Klasse injizieren, die er nicht kennt.

Der Schlüssel zu Ihrem Problem ist die Art und Weise, wie Sie die Instanz von erhalten und verwenden möchten A.

Wenn Sie verwenden möchten A in ihrem vom Frühling verwalteten Code müssen Sie sich eine Fabrik für erstellen A :

@Bean
public A a() {
B b = new MyB();
A a = new A(b); // new A is not possible since A is abstract but you got the idea
return a;
}

// ...

class MyService {
@Autowired
A a;

void something() {
(a.b instanceof MyB) // true
}

}