[JAVA] Changez la cible d'injection pour chaque environnement avec Spring Boot 2

introduction

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.

environnement

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.

Préparer l'interface

Tout d'abord, préparez une interface (une classe abstraite est également possible).

public interface TestInterface {
    void print();
}

Préparer l'entité d'interface

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.

Implémentation côté utilisateur

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

Changez la cible d'injection pour chaque environnement avec Spring Boot 2
Modifiez la valeur du paramètre pour chaque environnement avec Digdag (RubyOnRails)
Spring Boot pour la première fois
Diverses applications de commutation.properties pour chaque environnement au démarrage de Spring Boot
Spécifiez le délai d'expiration pour chaque chemin avec Rack :: Timeout
Créez des projets Spring Boot par environnement avec Gradle
Créer un environnement Spring Boot avec Windows + VS Code
Créer un environnement de développement Spring Boot avec docker
Environnement de développement-développement Spring Boot-
Télécharger avec Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Comment définir l'injection de dépendance Spring Boot (DI)
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
Accédez au h2db intégré de Spring Boot avec jdbcTemplate
SSO avec GitHub OAuth dans l'environnement Spring Boot 1.5.x
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
Comment démarrer par environnement avec Spring Boot de Maven
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
[Spring Boot] Construction de l'environnement (macOS)
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Changer de port avec SpringBoot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Une histoire remplie des bases de Spring Boot (résolu)
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Spring Boot à partir de Docker
Je souhaite contrôler la taille de fichier maximale pour le téléchargement de fichiers pour chaque URL dans Spring Boot
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un environnement Spring pour Android 2.0.0
[Android] Modifiez le nom de l'application et l'icône de l'application pour chaque saveur
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Spring Boot pour l'apprentissage des annotations
[Java] Exemple de projet de développement d'applications Web avec Spring Boot
Sachez que la valeur par défaut de la redirection Spring Boot est http
Voir le comportement de redirection relative avec le paramètre server.tomcat.use-relative-redirects dans Spring Boot
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA
Utiliser l'authentification de base avec Spring Boot
◆ Spring Boot + note de construction de l'environnement gradle
gRPC sur Spring Boot avec grpc-spring-boot-starter
Construction d'environnement avec Docker pour les débutants
Créez une application avec Spring Boot 2
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot