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