[JAVA] Changement de beans avec annotation de profil dans Spring

Utilisez le mécanisme de profil à ressort pour basculer entre les grains injectés dynamiquement.

Pour le moment, créez un projet de démarrage à ressort approprié.

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>

Créez une interface appropriée et créez des classes d'implémentation pour celle-ci.

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

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

}

La valeur par défaut du profil est `` par défaut ''. Par conséquent, si vous spécifiez cette valeur dans l'annotation de profil, cette classe sera utilisée lorsque le profil n'est pas spécifié.

@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";
	}

}

Injectez l'interface créée ci-dessus dans la classe de démarrage.

@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);
	}
}

Après cela, si vous spécifiez la propriété spring.profiles.active '' quelque part, ce profil sera utilisé, et s'il n'est pas spécifié, le `` par défaut '' sera utilisé comme mentionné ci-dessus.

La spécification de profil ressemble à ceci avec des arguments de ligne de commande.

--spring.profiles.active=dev

Lorsque vous spécifiez dans un fichier de propriétés, par exemple, application.yaml, cela ressemble à ceci.

application.yaml


spring.profiles.active: production

En passant, il existe de nombreuses façons de spécifier les propriétés, donc pour une liste et une priorité, voir https://docs.spring.io/spring-boot/docs/2.0.0.M4/reference/htmlsingle/#boot-features-external-config

Pour le contenu de cet exemple, la méthode d'interface par défaut peut être suffisante.

Recommended Posts

Changement de beans avec annotation de profil dans Spring
Mettre en œuvre une validation personnalisée avec des annotations dans Spring Framework et générer un message
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
Inject Logger au printemps
Utilisez Interceptor au printemps
Microservices dans Spring Cloud
Obtenez des cookies au printemps
Accéder dynamiquement à la propriété spécifiée par la chaîne dans Spring BeanWrapper