Sök…


Dev- och Prod-miljö med olika datakällor

Efter att Spring-Boot-applikationen har installerats, hanteras all konfiguration i en application.properties-fil. Du hittar filen på src/main/resources/ .

Normalt finns det ett behov av en databas bakom applikationen. För utveckling är det bra att ha en installation av dev och prod miljöer. Med hjälp av flera application.properties filer kan du berätta för Spring-Boot med vilken miljö applikationen ska starta.

Ett bra exempel är att konfigurera två databaser. En för dev och en för productive .

För dev miljön kan du använda en databas i minnet som H2 . Skapa en ny fil i src/main/resources/ katalog med namnet application-dev.properties . Inuti filen finns konfigurationen av databasen i minnet:

spring.datasource.url=jdbc:h2:mem:test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

För prod miljön kommer vi att ansluta till en "riktig" databas, till exempel postgreSQL . Skapa en ny fil i src/main/resources/ katalog med namnet application-prod.properties . Inuti filen finns konfigurationen av postgreSQL databasen:

spring.datasource.url= jdbc:postgresql://localhost:5432/yourDB
spring.datasource.username=postgres
spring.datasource.password=secret

I standard application.properties filen är du nu kunna ställa vilken profil är aktiverad och används av Spring-Boot. Ställ bara ett attribut inuti:

spring.profiles.active=dev

eller

spring.profiles.active=prod

Viktigt är att delen efter - i application-dev.properties är filens identifierare.

Nu kan du starta Spring-Boot-applikationen i utvecklings- eller produktionsläge genom att bara ändra identifieraren. En databas i minnet startas eller anslutningen till en "riktig" databas. Visst finns det mycket mer användningsfall för att ha flera egendomsfiler.

Ställ in rätt vårprofil genom att bygga applikationen automatiskt (maven)

Genom att skapa flera fastighetsfiler för olika miljöer eller använda fall är det ibland svårt att manuellt ändra värdet active.profile till rätt. Men det finns ett sätt att ställa in active.profile i filen application.properties medan du bygger applikationen med hjälp av maven-profiles .

Låt oss säga att det finns tre miljöegenskaper i vår applikation:

application-dev.properties :

spring.profiles.active=dev
server.port=8081

application-test.properties :

spring.profiles.active=test
server.port=8082

application-prod.properties .

spring.profiles.active=prod
server.port=8083

Dessa tre filer skiljer sig bara i port och aktivt profilnamn.

I huvud application.properties filen vi satt vår våren profil med en maven variabel :

application.properties .

spring.profiles.active=@profileActive@

Efter det måste vi bara lägga till maven-profilerna i vår pom.xml Vi kommer att ställa in profiler för alla tre miljöer:

 <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <build.profile.id>test</build.profile.id>
                <profileActive>test</profileActive>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <build.profile.id>prod</build.profile.id>
                <profileActive>prod</profileActive>
            </properties>
        </profile>
    </profiles>

Du kan nu bygga applikationen med maven. Om du inte anger någon mavenprofil bygger den standardprofilen (i det här exemplet är det dev). För att ange ett måste du använda ett maven nyckelord. Nyckelordet för att ställa in en profil i maven är -P direkt följt av profilens namn: mvn clean install -Ptest .

Nu kan du också skapa anpassade builds och spara dem i din IDE för snabbare builds.

Exempel:

mvn clean install -Ptest

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.3.RELEASE)

2017-06-06 11:24:44.885  INFO 6328 --- [           main] com.demo.SpringBlobApplicationTests      : Starting SpringApplicationTests on KB242 with PID 6328 (started by me in C:\DATA\Workspaces\spring-demo)
2017-06-06 11:24:44.886  INFO 6328 --- [           main] com.demo.SpringApplicationTests      : The following profiles are active: test

mvn clean install -Pprod

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.3.RELEASE)

2017-06-06 14:43:31.067  INFO 6932 --- [           main] com.demo.SpringBlobApplicationTests      : Starting SpringApplicationTests on KB242 with PID 6328 (started by me in C:\DATA\Workspaces\spring-demo)
2017-06-06 14:43:31.069  INFO 6932 --- [           main] com.demo.SpringApplicationTests      : The following profiles are active: prod


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow