[JAVA] Wechseln der Beans mit Profilanmerkung im Frühjahr

Verwenden Sie den Federprofilmechanismus, um zwischen dynamisch eingespritzten Bohnen zu wechseln.

Erstellen Sie vorerst ein geeignetes Spring-Boot-Projekt.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>hoge</groupId>
	<artifactId>springbootexpr2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springbootexpr2</name>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.7.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
</project>

Erstellen Sie eine geeignete Schnittstelle und erstellen Sie einige Implementierungsklassen dafür.

public interface ProfileSample {
	String getValue();
}
@Component
@Profile("default")
public class DefaultProfile implements ProfileSample {

	public String getValue() {
		return "default";
	}

}

Der Standardwert für das Profil ist `` `default```. Wenn Sie diesen Wert in der Profilanmerkung angeben, wird diese Klasse daher verwendet, wenn kein Profil angegeben ist.

@Component
@Profile("dev")
public class DevProfile implements ProfileSample {

	public String getValue() {
		return "dev";
	}

}
@Component
@Profile("production")
public class ProductionProfile implements ProfileSample {

	public String getValue() {
		return "production";
	}

}

Fügen Sie die oben erstellte Schnittstelle in die Startklasse ein.

@Controller
@EnableAutoConfiguration
@ComponentScan
public class SampleController {

	@Autowired
	ProfileSample sample;

	@RequestMapping("/")
	@ResponseBody
	String home() {
		System.out.println(sample.getValue());
		return "Hello World!";
	}

	public static void main(String[] args) throws Exception {
		SpringApplication.run(SampleController.class, args);
	}
}

Wenn Sie danach irgendwo die Eigenschaft `spring.profiles.active``` angeben, wird dieses Profil verwendet, und wenn nicht angegeben, wird` default``` wie oben erwähnt verwendet.

Die Profilspezifikation sieht mit Befehlszeilenargumenten so aus.

--spring.profiles.active=dev

Wenn Sie in einer Eigenschaftendatei angeben, zum Beispiel `` `application.yaml```, sieht es so aus.

application.yaml


spring.profiles.active: production

Übrigens gibt es viele Möglichkeiten, Eigenschaften anzugeben. Eine Liste und Priorität finden Sie unter https://docs.spring.io/spring-boot/docs/2.0.0.M4/reference/htmlsingle/#boot-features-external-config

Für den Inhalt dieses Beispiels kann die Standardmethode der Schnittstelle ausreichend sein.

Recommended Posts

Wechseln der Beans mit Profilanmerkung im Frühjahr
Implementieren Sie eine benutzerdefinierte Validierung mit Anmerkungen in Spring Framework und geben Sie eine Nachricht aus
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Injizieren Sie den Logger im Frühjahr
Verwenden Sie Interceptor im Frühjahr
Microservices in Spring Cloud
Holen Sie sich Cookies im Frühling
Greifen Sie dynamisch auf die durch die Zeichenfolge in Spring BeanWrapper angegebene Eigenschaft zu