Beispiel für Spring Boot-Profile
In diesem Artikel zeigen wir Ihnen, wie Sie@Profile
in Spring Boot verwenden und wie Sie es testen.
Getestet mit:
-
Spring Boot 2.1.2.RELEASE
-
Maven 3
1. Projektstruktur
Eine Standard-Maven-Projektstruktur.
2. Projektabhängigkeit
pom.xml
4.0.0 spring-boot-profile jar Spring Boot Profiles Example Spring Boot Profiles Example https://www.example.com 1.0 org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASE 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-surefire-plugin 2.22.0
3. Spring Boot
In Spring Boot lautet das Standardprofil "default
". Überprüfen Sie die folgenden Wetterdienste.
3.1 An interface.
WeatherService.java
package com.example.service; public interface WeatherService { String forecast(); }
3.2 Profile : sunny and default.
SunnyDayService.java
package com.example.service; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; @Service @Profile({"sunny", "default"}) public class SunnyDayService implements WeatherService { @Override public String forecast() { return "Today is sunny day!"; } }
3.3 Profile : raining.
RainingDayService.java
package com.example.service; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; @Service @Profile("raining") public class RainingDayService implements WeatherService { @Override public String forecast() { return "Today is raining day!"; } }
3.4 Start Spring Boot application.
Application.java
package com.example; import com.example.service.WeatherService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application implements CommandLineRunner { @Autowired private WeatherService weatherService; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void run(String... args) { System.out.println(weatherService.forecast()); } }
3.5 A properties file.
application.properties
# default profile is 'default' #spring.profiles.active=sunny logging.level.=error spring.main.banner-mode=off
4. Gerätetest
Einige Unit-Test-Beispiele.
4.1 Unit test a service class. Legen Sie ein aktives Profil über@ActiveProfiles
fest
TestWeatherService.java
package com.example; import com.example.service.WeatherService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringRunner.class) @SpringBootTest @ActiveProfiles("raining") public class TestWeatherService { @Autowired WeatherService weatherService; @Test public void testRainingProfile() { String output = weatherService.forecast(); assertThat(output).contains("Today is raining day!"); } }
4.2 Unit test a Spring Boot application. Sie können ein aktives Profil über die Eigenschaftspring.profiles.active
festlegen
TestApplication.java
package com.example; import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.springframework.boot.test.rule.OutputCapture; import static org.assertj.core.api.Assertions.assertThat; public class TestApplication { @Rule public OutputCapture outputCapture = new OutputCapture(); @Test public void testDefaultProfile() { Application.main(new String[0]); String output = this.outputCapture.toString(); assertThat(output).contains("Today is sunny day!"); } @Test public void testRainingProfile() { System.setProperty("spring.profiles.active", "raining"); Application.main(new String[0]); String output = this.outputCapture.toString(); assertThat(output).contains("Today is raining day!"); } @Test public void testRainingProfile_withDoption() { Application.main(new String[]{"--spring.profiles.active=raining"}); String output = this.outputCapture.toString(); assertThat(output).contains("Today is raining day!"); } @After public void after() { System.clearProperty("spring.profiles.active"); } }
P.S Credit to this Spring Boot SampleProfileApplicationTests
5. DEMO
Packe und starte es.
$ mvn package #default profile, sunny day! $ java -jar target/spring-boot-profile-1.0.jar Today is sunny day! # set a profile $ java -jar -Dspring.profiles.active=raining target/spring-boot-profile-1.0.jar Today is raining day!
Quellcode herunterladen
$ git clone https://github.com/example/spring-boot.git
$ cd profile-simple
$ mvn package
$ java -jar -Dspring.profiles.active=raining target/spring-boot-profile-1.0.jar