Konfiguracja Spring Boot z użyciem własnych plików properties

Konfiguracja z użyciem własnych plików properties

Aby nie dopuścić do sztywnego zapisu danych – tzw – „hardkowania” powinniśmy używać w projekcie plików konfiguracyjnych *.properties. Pliki te pozwalają na elastyczną konfigurację aplikacji. Zaczynamy od nowego projektu Spring Boota:

Klasa AppProperties:

@ConfigurationProperties(prefix="app")
@Configuration
public class AppProperties {
 
    AppConfig appConfig;
 
    String appName = "this is a custom properties example spring boot app";
 
    public AppConfig getAppConfig() {
        return appConfig;
    }
 
    public void setAppConfig(AppConfig appConfig) {
        this.appConfig = appConfig;
    }
 
    public String getAppName() {
        return appName;
    }
 
    public void setAppName(String appName) {
        this.appName = appName;
    }
 
    public static class AppConfig {
 
        int appPort = 8080;
 
        public int getAppPort() {
            return appPort;
        }
 
        public void setAppPort(int appPort) {
            this.appPort = appPort;
        }
    }
}

Za pomocą adnotacji:

@ConfigurationProperties(prefix="app")

definiujemy prefix który będziemy używać definiując parametry w pliku application.properties:

app.appName           = my javaleader.pl app
app.appConfig.appPort = 9090

RestControllerApp:

@RestController
public class RestControllerApp {
 
    AppProperties appProperties;
 
    public RestControllerApp(AppProperties appProperties) {
        this.appProperties = appProperties;
    }
 
    @GetMapping("/appName")
    public String getAppNameFromProperties() {
        return appProperties.getAppName();
    }
 
    @GetMapping("/appPort")
    public int getAppPortFromProperties() {
        return appProperties.getAppConfig().getAppPort();
    }
}

wynik dla:

http://localhost:8080/appPort

to:

9090

wynik dla:

http://localhost:8080/appName

to:

my javaleader.pl app

czyli jak widać powyżej są to dokładnie wartości zdefiniowane w pliku konfiguracyjnym application.properties.

Walidacja właściwości:

Aby dokonać walidacji ustawionych właściwości np. zweryfikować czy nie jest ona pusta należy dodać do pliku pom.xml zależność:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>5.3.4.Final</version>
</dependency>

oraz dodać adnotację @Validated do klasy konfiguracyjnej:

@Validated
public class AppProperties {

Dodajmy adnotację @NotEmpty na polu appName (wartość domyślna została dla przykładu usunięta):

@NotEmpty
String appName;

Jeśli plik application.properties wyglądałby następująco (brak właściwości appName):

app.appConfig.appPort = 9090

to podczas próby uruchomienia aplikacji otrzymamy następujący błąd:

***************************
APPLICATION FAILED TO START
***************************
 
Description:
 
Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'app' to pl.javaleader.customproperties.configuration.AppProperties...
 
    Property: app.appName
    Value: null
    Reason: may not be empty
 
 
Action:
 
Update your application's configuration

Zobacz kod na GitHubie i zapisz się na bezpłatny newsletter!

.

 

Leave a comment

Your email address will not be published.


*