In Spring Boot injizieren Sie mit "@ Autowired", aber ich werde darüber schreiben, was zu tun ist, wenn es einen Fall gibt, in dem Sie das zu lesende Ziel für jede Umgebung ändern möchten.
Die Umgebung hier ist das Spring Boog-Startargument spring.profiles.active
, und wenn dieses Startargument geändert wird, wird die zu lesende Klasse geändert.
Java10 Spring Boot2.0.4.RELEASE
Da es vor einiger Zeit erstellt wurde, ist die Umgebung alt, sollte aber mit Java 11 und Boot 2.1 funktionieren.
Bereiten Sie zunächst eine Schnittstelle vor (eine abstrakte Klasse ist ebenfalls möglich).
public interface TestInterface {
void print();
}
Da wir das zu lesende Ziel für jede Umgebung ändern möchten, generieren wir zwei Klassen, die die obige Schnittstelle implementieren.
Ändern Sie diese beiden Klassen mit Startargumenten.
Angenommen, Sie geben test und
test2` als Argumente an.
@Service
@Profile("test")
public class TestServiceA implements TestInterface {
public void print() {
System.out.println("test");
}
}
@Service
@Profile("test2")
public class TestServiceB implements TestInterface {
public void move() {
System.out.println("test2");
}
}
Fügen Sie einfach "@ Profile" hinzu. Wenn dies hinzugefügt wird und die Startargumente nicht übereinstimmen, wird es nicht in Bean konvertiert.
Dieses Mal werden wir diese Klasse von Controller verwenden.
@Controller
public class TestController {
@Autowired
private TestInterface testInterface;
//Controller-Verarbeitung
}
Stellen Sie einfach die Zielklasse auf Schnittstelle ein. Da es im Profil nur ein Ziel gibt, das eine Bean ist, ändert sich das Ziel abhängig vom Startargument.