Les profils Spring offrent un moyen puissant de séparer des parties de la configuration de votre application et de la rendre disponible uniquement dans certains environnements. Cette fonctionnalité est particulièrement utile pour gérer différentes configurations pour les environnements de développement, de test et de production sans modifier votre code.
Les profils Spring vous permettent d'enregistrer les beans de manière conditionnelle, en fonction du profil actif. Cela signifie que vous pouvez définir plusieurs beans du même type et spécifier lequel doit être actif dans un environnement donné.
Spring Boot utilise un ensemble de fichiers application-{profile}.properties ou application-{profile}.yml pour la configuration. Ces fichiers contiennent des configurations spécifiques au profil et sont chargés en fonction du profil actif.
spring: application: name: MySpringApp server: port: 8080 # Default port
spring: datasource: url: jdbc:h2:mem:devdb username: sa password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: update show-sql: true server: port: 8081 # Development port
spring: datasource: url: jdbc:mysql://prod-db-server:3306/proddb username: prod_user password: prod_password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: validate show-sql: false server: port: 8082 # Production port
Vous pouvez activer un profil en utilisant le paramètre --spring.profiles.active lors de l'exécution de votre application Spring Boot :
java -jar my-spring-app.jar --spring.profiles.active=dev
Vous pouvez également spécifier le profil actif dans votre fichier application.yml :
spring: profiles: active: dev # or prod
Vous pouvez également définir le profil actif à l'aide d'une variable d'environnement :
export SPRING_PROFILES_ACTIVE=dev
Spring fournit une annotation @Profile pour enregistrer conditionnellement les beans en fonction du profil actif. Voici un exemple :
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration public class AppConfig { @Bean @Profile("dev") public DataSource devDataSource() { return new HikariDataSource(); // Development-specific DataSource } @Bean @Profile("prod") public DataSource prodDataSource() { return new HikariDataSource(); // Production-specific DataSource } }
Dans cet exemple, le bean devDataSource ne sera créé que lorsque le profil de développement est actif, et le bean prodDataSource sera créé lorsque le profil de production est actif.
Lors de l'écriture de tests, vous pouvez spécifier quels profils doivent être actifs à l'aide de l'annotation @ActiveProfiles :
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @SpringBootTest @ActiveProfiles("dev") public class DevProfileTests { @Autowired private DataSource dataSource; @Test public void testDataSource() { // Test code using the development DataSource } }
Parfois, vous souhaiterez peut-être charger différents fichiers de propriétés en fonction du profil actif. Vous pouvez utiliser l'annotation @PropertySource pour y parvenir :
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration @PropertySource("classpath:application-${spring.profiles.active}.properties") public class PropertyConfig { }
Les profils Spring constituent un moyen robuste et flexible de gérer différentes configurations pour différents environnements. En séparant vos propriétés de configuration et vos beans en fonction des profils, vous pouvez garantir que votre application se comporte correctement dans chaque environnement, qu'il s'agisse de développement, de test ou de production. À l'aide des techniques décrites dans cet article, vous pouvez facilement configurer et gérer des profils dans votre application Spring Boot.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3