Je vais injecter avec @ Autowired
dans Spring Boot, mais j'écrirai sur ce qu'il faut faire s'il y a un cas où vous voulez changer la cible à lire pour chaque environnement.
L'environnement ici est l'argument de démarrage Spring Boog spring.profiles.active
, et lorsque cet argument de démarrage est modifié, la classe à lire est modifiée.
Java10 Spring Boot2.0.4.RELEASE
Depuis qu'il a été créé il y a quelque temps, l'environnement est ancien, mais il devrait fonctionner avec les séries Java 11 et Boot 2.1.
Tout d'abord, préparez une interface (une classe abstraite est également possible).
public interface TestInterface {
void print();
}
Puisque nous voulons changer la cible à lire pour chaque environnement, nous allons générer deux classes qui implémentent l'interface ci-dessus.
Modifiez ces deux classes avec des arguments de démarrage.
Supposons que vous donniez test et
test2` comme arguments.
@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");
}
}
Ajoutez simplement «@ Profile». Si cela est ajouté, si les arguments de démarrage ne correspondent pas, il ne sera pas converti en Bean.
Cette fois, nous utiliserons cette classe de Controller.
@Controller
public class TestController {
@Autowired
private TestInterface testInterface;
//Traitement du contrôleur
}
Définissez simplement la classe cible sur l'interface. Puisqu'il n'y a qu'une seule cible qui est un bean dans Profile, la cible change en fonction de l'argument de démarrage.
Recommended Posts