Mis à jour le

Leaf
Intermediaire 10 questions • Java/Spring

Questions d'entretien Spring Boot

Preparez votre entretien Spring Boot avec des questions sur l'auto-configuration, la sécurité et les bonnes pratiques.

Questions d'entretien Spring Boot

1. Comment fonctionne l'auto-configuration de Spring Boot ?

L'auto-configuration detecte les dépendances sur le classpath et configure automatiquement les beans correspondants. Le mécanisme : Spring Boot scanne les fichiers META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports dans chaque JAR. Chaque classe d'auto-configuration utilise des conditions : @ConditionalOnClass (classe presente sur le classpath), @ConditionalOnMissingBean (bean pas encore défini), @ConditionalOnProperty (propriété activee). Vous pouvez voir les conditions evaluees avec --debug ou l'endpoint /actuator/conditions.

2. Expliquez les Spring Boot Starters et leur fonctionnement.

Un starter est un ensemble de dépendances Maven/Gradle qui simplifie la configuration. Exemple : spring-boot-starter-web inclut Spring MVC, un serveur Tomcat embarque, Jackson pour le JSON, et les auto-configurations correspondantes. Starters courants : starter-data-jpa (JPA + Hibernate), starter-security (Spring Security), starter-test (JUnit, Mockito, Spring Test), starter-actuator (monitoring). Chaque starter tire les dépendances nécessaires et active les auto-configurations via les conditions @ConditionalOn*.

3. Comment gérer les propriétés de configuration dans Spring Boot ?

Sources (ordre de priorité) : arguments de ligne de commande > variables d'environnement > application-{profile}.properties > application.properties > valeurs par défaut. Utilisez @ConfigurationProperties pour binder des propriétés à un POJO type-safe (meilleur que @Value pour les groupes de propriétés). Activez les profils (spring.profiles.active=prod) pour les configurations par environnement. Externalisez les secrets avec un coffre-fort (Vault, AWS Secrets Manager) ou des variables d'environnement.

4. Comment sécuriser une API Spring Boot avec Spring Security ?

Spring Security filtre les requêtes HTTP via une chaîne de SecurityFilterChain. Configuration moderne (Spring Security 6+) : SecurityFilterChain bean avec HttpSecurity. Authentification : formLogin, httpBasic, OAuth2 (Resource Server pour les JWT, Client pour le SSO). Autorisation : requestMatchers avec permit/authenticated/hasRole au niveau URL, @PreAuthorize au niveau méthode. Desactivez CSRF pour les API stateless (JWT). Utilisez un PasswordEncoder (BCrypt) pour hasher les mots de passe.

5. Qu'est-ce que Spring Data JPA et comment l'utiliser efficacement ?

Spring Data JPA simplifie l'accès aux données avec des Repository interfaces. Définissez une interface extends JpaRepository et Spring genere l'implémentation. Derived queries : findByNameAndAge(), existsByEmail() — Spring deduit la requête SQL du nom de la méthode. @Query pour les requêtes JPQL ou natives. Optimisations : EntityGraph pour éviter le N+1, projections pour ne lire que les champs nécessaires, Pageable pour la pagination, Spécifications pour les requêtes dynamiques.

6. Comment gérer les transactions dans Spring ?

L'annotation @Transactional gere les transactions declarativement. Propriétés : propagation (REQUIRED par défaut — rejoint la transaction existante ou en cree une), isolation (niveau d'isolation SQL), readOnly (optimisation pour les lectures), timeout, rollbackFor (exceptions declenchant un rollback). Pièges courants : @Transactional ne fonctionne que sur les méthodes publiques (proxy-based AOP), l'auto-invocation ne declenche pas le proxy, les exceptions checked ne provoquent pas de rollback par défaut.

7. Expliquez Spring Boot Actuator et ses endpoints.

Actuator expose des endpoints de monitoring et de gestion : /health (état de l'application et de ses dépendances), /metrics (métriques Micrometer : CPU, mémoire, requêtes HTTP), /info (informations sur l'application), /env (propriétés de configuration), /loggers (modifier les niveaux de log a chaud), /threaddump et /heapdump (diagnostic). Sécurisez ces endpoints (ne les exposez pas publiquement). Exportez les métriques vers Prometheus avec micrometer-registry-prometheus.

8. Comment implémenter la gestion des erreurs dans une API REST Spring Boot ?

Utilisez @ControllerAdvice avec @ExceptionHandler pour centraliser la gestion des erreurs. Définissez un ErrorResponse standard (timestamp, status, message, path). Créez des exceptions métier spécifiques (ResourceNotFoundException -> 404, ValidationException -> 400). Spring Boot fournit ProblemDetail (RFC 7807) pour un format d'erreur standardise. N'exposez jamais les stack traces en production (server.error.include-stacktrace=never).

9. Comment tester une application Spring Boot ?

@SpringBootTest : charge le contexte complet (tests d'intégration). @WebMvcTest : teste les controllers sans charger tout le contexte. @DataJpaTest : teste les repositories avec une base H2 en mémoire. MockMvc : simule des requêtes HTTP sans démarrer le serveur. @MockBean : remplace un bean par un mock dans le contexte Spring. TestRestTemplate / WebTestClient : tests d'intégration avec le serveur démarre. Testcontainers : bases de données réelles dans Docker pour les tests d'intégration realistes.

10. Quelles sont les nouveautés de Spring Boot 3 et Spring Framework 6 ?

Changements majeurs : migration vers Java 17+ (minimum), passage de javax.* a jakarta.* (Jakarta EE 10), support natif de GraalVM Native Image (démarrage en millisecondes), Spring AOT (compilation ahead-of-time), support des Virtual Threads (Java 21), Observability integree avec Micrometer Tracing (remplacement de Spring Cloud Sleuth), ProblemDetail (RFC 7807) par défaut, et HTTP interfaces (clients HTTP declaratifs comme Spring Data).

Besoin d'aide pour préparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions fréquentes

Spring Boot ou Quarkus, lequel choisir ?
Spring Boot pour son ecosysteme mature, sa documentation abondante et sa large communaute. Quarkus pour les performances de demarrage (natif GraalVM), la faible consommation memoire et les environnements serverless/containers. Spring Boot 3 a reduit l'ecart avec le support natif. Pour la majorite des projets, Spring Boot reste le choix le plus sur.
Spring Boot est-il adapte aux microservices ?
Oui, c'est l'un des choix les plus populaires. Spring Cloud fournit les patterns microservices (Config Server, Service Discovery, Circuit Breaker, API Gateway). Spring Boot + Spring Cloud + Docker + Kubernetes est une stack tres repandue en entreprise pour les microservices Java.

Pages liées

Chaque semaine, le meilleur de la tech française

Tendances, salaires, outils et opportunités — directement dans votre boîte mail.

Gratuit. Desabonnement en un clic. Pas de spam.