[JAVA] So teilen Sie eine Spring Boot-Nachrichtendatei

Überblick

Dieses Mal werde ich Ihnen zeigen, wie Sie die Nachrichtendatei (.properties) mit Spring Boot teilen. Wenn Sie spring.messages.basename in application.properties angeben, die durch Kommas getrennt sind, können Sie es in mehrere Dateien aufteilen. Mit zunehmender Anzahl von Dateien wird die Verwaltung jedoch schwierig, sodass Sie Nachrichtendateien in einem bestimmten Ordner dynamisch lesen können. Ich habs gemacht.

1. Verhindern Sie, dass MessageSourceAutoConfiguration gestartet wird

Standardmäßig führt Spring Boot die MessageSourceAutoConfiguration-Klasse aus und generiert eine MessageSource-Bean, wenn sich die Nachrichtendatei an dem in spring.messages.basename angegebenen Speicherort befindet. Da wir die MessageSource dieses Mal selbst generieren möchten, werden wir keine resources / messages.properties platzieren. Dies ist der Standardwert von spring.messages.basename.

2. Konfigurationsklasse

Erstellen Sie die Config-Klasse mit den folgenden Inhalten. Ich habe es in Kotlin geschrieben, aber in Java ist es dasselbe. In diesem Beispiel wird die Nachrichtendatei in resources / i18n geladen. Es fühlt sich in Bezug auf die Verarbeitung etwas aggressiv an. .. ..

AppConfig.kt


package ...

import org.springframework.context.MessageSource
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.support.ResourceBundleMessageSource
import org.springframework.core.io.support.ResourcePatternResolver
import org.springframework.util.StringUtils
import java.nio.charset.StandardCharsets

@Configuration
class AppConfig {
    /**
     *Generieren Sie eine Nachrichtenquelle
     */
    @Bean
    fun messageSource(resourcePatternResolver : ResourcePatternResolver): MessageSource {

        val messageSource = ResourceBundleMessageSource()

        //Satz von Codierungen(Im Bedarfsfall)
        messageSource.setDefaultEncoding(StandardCharsets.UTF_8)
        
        //Andere Einstellungen
        /*
        messageSource.setFallbackToSystemLocale(xxx)
        messageSource.setCacheMillis(xxx)
        messageSource.setAlwaysUseMessageFormat(xxx)
        messageSource.setUseCodeAsDefaultMessage(xxx)
        */

        //Erhalten Sie dynamische Nachrichten
        //Rufen Sie eine Liste der Eigenschaftendateien ab, indem Sie ein Muster angeben
        resourcePatternResolver.getResources("classpath*:i18n/*.properties")
            .filter { it.isFile }.mapNotNull { it.filename }.forEach {
                val baseName = if (it.contains("_")) { //Mit Gebietsschema(Im Dateinamen"_"Es ist beinhaltet)
                    it.substringBeforeLast("_")
                } else { //Kein Gebietsschema
                    it.removeSuffix(".properties")
                }
                messageSource.addBasenames("i18n/$baseName")
            }
        }
        return messageSource
    }

das ist alles.

Zusammenfassung

Es ist ein bisschen aggressiv, aber ich hoffe es hilft. Außerdem war ich besorgt über den Leistungsabfall, wenn die Anzahl der Dateiteile groß war. Daher habe ich mehr als 500 Dateien erstellt und die Zeit für die Nachrichtenerfassung gemessen. Die Nachrichtenabrufzeit erhöhte sich proportional zur Anzahl der Nachrichtendateien nur für den ersten Zugriff, aber nach dem zweiten Zugriff (ein anderer Nachrichtenschlüssel ist ebenfalls möglich) könnte die Nachricht mit hoher Geschwindigkeit abgerufen werden. Ich kann mit der internen Verarbeitung nicht Schritt halten, aber ich denke, sie enthält Cache- oder Look-Ahead-ähnliche Verarbeitung.

Recommended Posts

So teilen Sie eine Spring Boot-Nachrichtendatei
So binden Sie mit einer Eigenschaftendatei in Spring Boot
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
So stellen Sie Spring Boot + PostgreSQL ein
Verwendung von ModelMapper (Spring Boot)
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
So verkleinern Sie das Spring Boot Docker-Image
Verwendung von Spring Boot-Sitzungsattributen (@SessionAttributes)
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
Versuchen Sie Spring Boot von 0 bis 100.
So stellen Sie Spring Boot Dependency Injection (DI) ein
So schreiben Sie einen Komponententest für Spring Boot 2
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Booten nach Umgebung mit Spring Boot of Maven
Einführung in Spring Boot Teil 1
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Ändern Sie die Spring Boot-Validierungsnachricht
[Ruby] So teilen Sie jede GraphQL-Abfrage in Dateien auf
So ändern Sie den Einstellungswert von application.properties beim Booten im Frühjahrsstart
Schneiden Sie SQL in die Eigenschaftendatei mit jdbcTemplate von Spring Boot aus
Aufrufen und Verwenden der API in Java (Spring Boot)
So steuern Sie Transaktionen in Spring Boot ohne Verwendung von @Transactional
Wie man Lombok im Frühling benutzt
So führen Sie einen Komponententest für Spring AOP durch
Hinweise zur Verwendung von Spring Data JDBC
[So installieren Sie Spring Data Jpa]
Nachricht erlöschen (Spring Boot)
So konvertieren Sie erb-Datei in haml
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
[Anfänger] So löschen Sie NO FILE
Die Nachrichtenkooperation begann mit Spring Boot
So erstellen Sie mit SPRING INITIALIZR einen Hinadan für ein Spring Boot-Projekt
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht
So laden Sie eine Spring-Upload-Datei und zeigen ihren Inhalt an
Ich möchte die Standardfehlermeldung von Spring Boot steuern
So erzielen Sie mit Rest Template of Spring einen großen Datei-Upload
[Einführung in Spring Boot] Überprüfung der Formularvalidierung
[Java] Verwendung der File-Klasse
Statische Dateizugriffspriorität beim Spring Boot
Wie kann ich Spring Tool in Eclipse 4.6.3 einbinden?
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
So erreichen Sie den Dateidownload mit Feign
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
[Spring MVC] Übergeben von Pfadvariablen
So schreiben Sie den Spring AOP Point Cut Specifier
So erreichen Sie das Hochladen von Dateien mit Feign
Fügen Sie Frühlingsstiefel und Gradle zur Sonnenfinsternis hinzu
So wenden Sie Thymeleaf-Änderungen sofort mit #Spring Boot + maven auf den Browser an
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.