[JAVA] So legen Sie ein Profil mit annotationsbasierter Konfiguration im Spring-Framework fest und verwenden es

Spring DI

Configuration

Im Spring-Framework wird eine Konfigurationsdatei mit dem Namen Configuration an den DI-Container übergeben und "Diese Instanz in einem solchen Fall zurückgeben" festgelegt. Es gibt drei Arten von Konfigurationsdateien.

Die annotationsbasierte Konfiguration wird unten beschrieben.

Anmerkungsbasierte Konfiguration

@Configuration Gibt an, dass es sich um eine Konfigurationsklasse handelt.

AppConfig


package com.example;

@Configuration
public class AppConfig {

}

@Component Registrieren Sie die Klasse als Bean, die vom DI-Container verwaltet werden soll.

User


package com.example;

@Component
public class User {

  public String getName(){
    ...
  }

}

@ComponentScan Scannen Sie die Klasse mit @Component und registrieren Sie sie in DI als Bean. Das Scan-Ziel kann als Paket angegeben werden. Die Einstellungen für die zuvor erwähnte AppConfig-Klasse lauten wie folgt.

Configuration


package com.example;

@Configuration
@ComponentScan("com.example")
public class AppConfig {

}

Beispielcode für annotationsbasierte Konfiguration

Wenn Sie den DI-Container mit den obigen Anmerkungen verwenden, lautet der Code wie folgt.

DemoIoC


package com.example;

public class DemoIoC {
  public static void main(String args[]){

    //Erstellen Sie einen DI-Container und übergeben Sie eine Konfigurationsdatei
    AnnotationConfigApplicationContext context =
                      new AnnotationConfigApplicationContext(AppConfig.class);

    //Holen Sie sich Bean
    User user = context.getBean(User.class);
    System.out.println(User.getName())
  }
}

Profileinstellungen

Mit dem Spring-Framework können Sie Konfigurationen gruppieren und als Profile verwalten. Beispielsweise können die Konfiguration für die Entwicklung, die Konfiguration für das Testen und die Konfiguration für Produkte separat verwaltet und die Konfiguration einfach umgeschaltet werden.

@Profile Stellen Sie das Profil ein. Ändern Sie die Benutzerklassenhierarchie wie folgt und legen Sie das Profil fest.

User


package com.example;

public interface User {
  public String getName();
}

UserDummy


package com.example;

@Component
@Profile("dev") //Richten Sie ein Profil mit dem Namen dev ein
public class UserDummy implements User {
  ...
}

UserMaster


package com.example;

@Component
@Profile("test") //Richten Sie ein Profil mit dem Namenstest ein
public class UserImpl implements User {
  ...
}

Beispiel für die Profilverwendung

Legen Sie ein Profil fest und verwenden Sie die obige Benutzerklassenhierarchie.

DemoIoC


package com.example;

public class DemoIoC {
  public static void main(String args[]){

    //Erstellen Sie einen DI-Container
    //Setze dev als Profil
    AnnotationConfigApplicationContext context =
                      new AnnotationConfigApplicationContext();
    context.register(AppConfig.class);
    context.getEnvironment().addActiveProfile("dev");
    context.refresh();

    //Holen Sie sich Bean
    //Die Implementierung von user ist UserDummy
    User user = context.getBean(User.class);
    System.out.println(User.getName())
  }
}

Recommended Posts

So legen Sie ein Profil mit annotationsbasierter Konfiguration im Spring-Framework fest und verwenden es
Wie man Lombok im Frühling benutzt
Aufrufen und Verwenden der API in Java (Spring Boot)
So richten Sie kapt ein und verwenden es
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Verwendung des In-Memory-Job-Repositorys mit Spring Batch
Verwendung von StringBurrer und Arrays.toString.
Verwendung von EventBus3 und ThreadMode
Hinweise zur Verwendung von Spring Data JDBC
So stellen Sie Spring Boot + PostgreSQL ein
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Verwendung von InjectorHolder in OpenAM
Verwendung von ModelMapper (Spring Boot)
Wie verwende ich Klassen in Java?
So setzen Sie Lombok in Eclipse
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Verwendung von OrientJS und OrientDB zusammen
Verwendung von BootStrap mit Play Framework
Wie kann ich Spring Tool in Eclipse 4.6.3 einbinden?
Verwendung von Docker in VSCode DevContainer
Verwendung von MySQL im Rails-Tutorial
Verwendung von Umgebungsvariablen in RubyOnRails
Verwendung von Teilzeichenfolgen und Substratmethoden
Verstehe in 5 Minuten !! Wie man Docker benutzt
Verwendung von credentials.yml.enc aus Rails 5.2
Verwendung von @Builder und @NoArgsConstructor zusammen
Verwendung von ExpandableListView in Android Studio
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
[Rails] Verwendung von Auswahlfeldern in Ransack
Verwendung des eingebauten h2db mit Federstiefel
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Verwendung des Java-Frameworks mit AWS Lambda! ??
Verwendung von Spring Boot-Sitzungsattributen (@SessionAttributes)
Verwendung von Segmented Control und zu notierenden Punkten
So fügen Sie in Spring Boot einen Klassenpfad hinzu
So richten Sie jEnv (Mac) ein und bedienen es
Legen Sie das Profilbild eines Benutzers mit CarrierWave fest
Verwendung der Scope- und Pass-Verarbeitung (Servist)
Verwendung von JQuery in Rails 6 js.erb
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
So binden Sie mit einer Eigenschaftendatei in Spring Boot
So definieren Sie mehrere orm.xml in Spring4, JPA2.1
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Verwendung der Symbolleiste mit Superrand Teil 1 Stellen Sie Zeichen ein und ändern Sie die Farben
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
[Spring Framework] Konfigurationsaufteilung
[Ruby] Verwendung der Standardausgabe bei der bedingten Verzweigung
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
So stellen Sie Spring Boot Dependency Injection (DI) ein
Verwendung von Map
Wie benutzt man rbenv?
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte