Top 50 des questions et réponses d'entretien de Spring Boot

30 octobre 2021

Table des matières

1. Qu'est-ce que Spring Boot ?

Spring Boot est un framework de module Spring pour la construction RAD à l'aide du framework Spring avec la prise en charge supplémentaire de la configuration automatique et du serveur d'applications intégré (comme Tomcat, Jetty).

Questions et réponses de l'entretien d'embauche de Spring Boot

2. Quels sont les avantages d'utiliser Spring Boot ?

  • Il fournit une configuration automatique pour charger un ensemble de configurations par défaut pour un démarrage rapide de l'application.
  • Crée des applications autonomes avec une gamme de fonctionnalités non fonctionnelles communes à de grandes classes de projets.
  • Spring Boot est livré avec Tomcat intégré, une jetée de conteneurs de servlets pour éviter l'utilisation de fichiers WAR.
  • Spring Boot offre une vue avisée pour réduire l'effort du développeur et simplifier les configurations maven
  • Fournit un outil CLI pour développer et tester des applications
  • Livré avec des démarreurs de démarrage à ressort pour assurer la gestion des dépendances et fournit également diverses mesures de sécurité
  • Se compose d'une large gamme d'API pour la surveillance et la gestion des applications en développement et en production
  • S'intègre facilement à Spring Ecosystem comme Spring JDBC, Spring ORM, Spring Data, Spring Security en évitant le code passe-partout

3. Qu'est-ce qu'un conteneur IOC et ses avantages ?

Le conteneur IOC du ressort (Inversion de contrôle) est au cœur du cadre du ressort. Ce conteneur lira le fichier de configuration et sur cette base, il créera et stockera les objets et le gérera.



Avantage : les développeurs peuvent se concentrer sur la logique métier puisque la création et la gestion des objets sont gérées par des conteneurs IOC.

Conteneur IOC

4. Pouvons-nous changer le port du serveur Tomcat intégré au démarrage de Spring ?

Oui, nous pouvons modifier le port du serveur Tomcat intégré en utilisant le fichier de propriétés de l'application.

Dans ce fichier, vous deviez ajouter une propriété de server.port et l'affecter à n'importe quel port de votre choix.

Par exemple, si vous voulez l'attribuer à 8081, alors vous devez mentionner server.port=8081

Une fois que vous avez mentionné le numéro de port, le fichier de propriétés de l'application sera automatiquement chargé par Spring Boot et les configurations requises seront appliquées à l'application.

Voir également Top 100 des questions et réponses d'entrevue JavaScript

5. Pouvons-nous remplacer ou remplacer le serveur Tomcat intégré dans Spring Boot ?

Oui, nous pouvons remplacer le serveur Tomcat intégré en utilisant les dépendances de démarrage. Comme spring-boot-starter-jetty comme dépendance pour chaque projet selon vos besoins.

6. Pouvons-nous désactiver le serveur Web par défaut dans l'application de démarrage Spring ?

Le principal point fort de Spring est de fournir la flexibilité nécessaire pour créer votre application de manière lâche. Spring fournit des fonctionnalités pour désactiver le serveur Web dans une configuration rapide. Oui, nous pouvons utiliser les propriétés de l'application pour configurer le type d'application Web, c'est-à-dire spring.main.web-application-type=none.

7. Comment désactiver une classe d'auto-configuration spécifique ?

Vous pouvez utiliser l'attribut d'exclusion de @EnableAutoConfiguration, si vous trouvez que des classes de configuration automatique spécifiques que vous ne voulez pas sont appliquées.

  • //En utilisant l'exclusion
  • @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

8. Que fait l'annotation @SpringBootApplication en interne ?

Selon la documentation Spring Boot, l'annotation @SpringBootApplication équivaut à utiliser @Configuration, @EnableAutoConfiguration et @ComponentScan avec leurs attributs par défaut. Spring Boot permet au développeur d'utiliser une seule annotation au lieu d'en utiliser plusieurs. Mais comme nous le savons, Spring fournit des fonctionnalités faiblement couplées que nous pouvons utiliser pour chaque annotation individuelle selon les besoins de notre projet.

9. Comment utiliser une propriété définie dans le fichier application.properties dans votre classe Java ?

Utilisez l'annotation @Value pour accéder aux propriétés définies dans l'application – fichier de propriétés.

  • @Valeur(${custom.value})
  • Chaîne privée Val personnalisée ;

10. Expliquer l'annotation @RestController dans Spring Boot ?

@RestController est une annotation pratique pour créer des contrôleurs Restful. Il s'agit d'une spécialisation de @Component et est automatiquement détectée par l'analyse du chemin de classe. Il ajoute les annotations @Controller et @ResponseBody. Il convertit la réponse en JSON ou XML.

  • Ce qui élimine le besoin d'annoter chaque méthode de gestion des requêtes de la classe de contrôleur avec l'annotation @ResponseBody. Il est généralement utilisé en combinaison avec des méthodes de gestionnaire annotées basées sur l'annotation @RequestMapping.
  • Indique que les données renvoyées par chaque méthode seront écrites directement dans le corps de la réponse au lieu de rendre le modèle.

Principales questions et réponses de l'entretien d'embauche avec Spring Boot

11. Différence entre l'annotation @RestController et @Controller dans Spring Boot ?

@Controller Carte de l'objet modèle à afficher ou à modéliser et à rendre lisible par l'homme, mais @RestController renvoie simplement l'objet et les données de l'objet sont directement écrites dans la réponse HTTP au format JSON ou XML.

12. Quelle est la différence entre RequestMapping et GetMapping ?

RequestMapping peut être utilisé avec GET, POST, PUT et de nombreuses autres méthodes de requêtes à l'aide de l'attribut method sur l'annotation. Alors que GetMapping n'est qu'une extension de RequestMapping, qui vous aide à améliorer la clarté des requêtes.

13. À quoi servent les profils dans Spring Boot ?

Lors du développement d'applications pour l'entreprise, nous traitons généralement avec plusieurs environnements tels que Dev, QA et Prod. Les propriétés de configuration de ces environnements sont différentes.

Par exemple, nous pourrions utiliser une base de données H2 intégrée pour Dev, mais Prod pourrait avoir le propriétaire Oracle ou DB2. Même si le SGBD est le même dans tous les environnements, les URL seraient certainement différentes.

Spring propose des profils pour aider à séparer la configuration de chaque environnement. Ainsi, au lieu de les conserver par programmation, les propriétés peuvent être conservées dans des fichiers séparés tels que application-dev.properties et application-prod.properties.

L' application.properties par défaut pointe vers le profil actuellement actif à l'aide de spring.profiles.active afin que la configuration correcte soit sélectionnée.

14. Quelle est la différence entre le ressort et la botte à ressort ?

PrintempsBotte de printemps
Un framework d'application web basé sur JavaUn module de printemps
Fournit des outils et des bibliothèques pour créer des applications Web personnaliséesUtilisé pour créer un projet d'application Spring qui peut simplement exécuter/exécuter
Spring est plus complexe que Spring BootSpring Boot est moins complexe que le framework Spring
Adopte un point de vue sans opinionAdopte un point de vue avisé sur une plateforme

15. Mentionnez quelques fonctionnalités de Spring Boot.

quelques fonctionnalités de Spring Boot
  • Spring CLI: Spring Boot CLI vous permet d'utiliser Groovy pour écrire des applications de démarrage Spring et évite le code passe-partout.
  • Spring Initializer : il s'agit essentiellement d'une application Web, qui peut créer une structure de projet interne pour vous.
  • Spring Actuator : cette fonctionnalité fournit de l'aide lors de l'exécution des applications Spring Boot.
  • Dépendance de démarrage : à l'aide de cette fonctionnalité, Spring Boot regroupe les dépendances communes et améliore éventuellement la productivité.
  • Configuration automatique : les fonctionnalités de configuration automatique de Spring Boot aident à charger les configurations par défaut en fonction du projet sur lequel vous travaillez.
  • Journalisation et sécurité : cette fonctionnalité de Spring Boot garantit que toutes les applications créées à l'aide de Spring Boot sont correctement sécurisées sans aucun problème.

16. Expliquez comment créer des applications Spring Boot à l'aide de Maven.

Il existe différentes approches pour créer une application Spring Boot à l'aide de maven :

  • CLI de démarrage de printemps
  • Assistant de projet Spring Boot
  • Initialiseur de démarrage de printemps
  • Projet Spring Maven

17. Mentionnez les sources possibles de configuration externe.

La source la plus possible de configuration externe :

  • Propriétés de l'application
  • Propriétés de la ligne de commande
  • Propriétés spécifiques au profil

18. Pouvez-vous expliquer ce qui se passe en arrière-plan lorsqu'une application Spring Boot est exécutée en tant qu'application Java ?

Lorsqu'une application Spring Boot est exécutée en tant qu'application Exécuter en tant que Java, elle lance automatiquement le serveur Tomcat dès qu'elle constate que vous développez une application Web.

19. Que sont les démarreurs Spring Boot et quels sont les démarreurs disponibles ?

Les démarreurs Spring Boot sont un ensemble de fournisseurs de gestion des dépendances pratiques qui peuvent être utilisés dans l'application pour activer les dépendances. Ces démarreurs rendent le développement facile et rapide. Tous les démarreurs disponibles appartiennent au groupe org.springframework.boot.

  • Spring-boot-starter
  • Spring-boot-starter-jdbc
  • Spring-boot-starter-web
  • Spring-boot-starter-data-jpa
  • Spring-boot-starter-sécurité
  • Spring-boot-starter-aop
  • printemps-boot-starter-test
Voir également Top 100 des questions et réponses d'entrevue Ansible

20. Expliquer l'actionneur à ressort et ses avantages.

L'actionneur à ressort est une fonctionnalité de Spring Boot à l'aide de laquelle vous pouvez voir ce qui se passe dans une application en cours d'exécution.

L'actionneur à ressort offre un moyen très simple d'accéder aux points REST prêts pour la production et de récupérer toutes sortes d'informations sur le Web.

Ces points sont sécurisés à l'aide de la stratégie de négociation de contenu de Spring Security.

Principales questions et réponses de l'entretien d'embauche avec Spring Boot

21. Qu'est-ce que la gestion des dépendances Spring Boot ?

La gestion des dépendances Spring Boot est utilisée pour gérer automatiquement les dépendances et la configuration sans que vous ne spécifiiez la version de l'une de ces dépendances.

22. Mentionnez les exigences minimales pour un système de démarrage Spring.

Démarrage de printemps 2.1.7. La libération nécessite

Prise en charge de la construction explicite

  • Maven 3.3+
  • Niveau 4.4+

Prise en charge des conteneurs de servlets

  • Tomcat 9.0 – Servlets Version 4.0
  • Jetty 9.4 - Servlet Version 3.1
  • Undertow 2.0-servlet version 4.0

23. Qu'est-ce que la feuille de thym et comment l'utiliser ?

Thyme leaf est un moteur de modèle Java côté serveur utilisé pour les applications Web.

Il vise à apporter un modèle naturel pour votre application Web et peut également s'intégrer aux applications Web Spring Framework et HTML5 Java.

org.springframework.boot

spring-boot-starter-thymeleaf

Qu'est-ce que la feuille de thym

24. Quel est le besoin de Spring Boot DevTools ?

Spring Boot DevTools est un ensemble élaboré d'outils et vise à faciliter le processus de développement d'une application.

Si l'application s'exécute en production, alors ce module est automatiquement désactivé, le reconditionnement des archives est également exclu par défaut.

Ainsi, les outils de développement Spring Boot appliquent les propriétés aux environnements de développement respectifs.

|__+_|

25. Mentionnez les étapes pour créer un projet Spring Boot à l'aide de Spring Initializer.

Spring Initializer est un outil Web fourni par Spring. Avec l'aide de cet outil, vous pouvez créer des projets Spring Boot en fournissant simplement les détails du projet.

  • Choisissez le projet maven et les dépendances requises. Ensuite, remplissez les autres détails requis comme Groupe, Artefact, puis cliquez sur Générer un projet.
  • Une fois le projet téléchargé, extrayez-le sur votre système.
  • Ensuite, vous devez importer ce projet à l'aide de l'option d'importation de l'IDE Spring Tool Suite.

26. Mentionnez les étapes pour connecter l'application Spring Boot à une base de données à l'aide de JDBC.

Les projets de démarrage Spring Boot fournissent les bibliothèques requises pour connecter l'application à JDBC.

Ainsi, par exemple, s'il vous suffit de créer une application et de la connecter à Base de données MYSQL , vous pouvez suivre les étapes ci-dessous :

Étape 1 : Créer une base de données dans MySQL

|__+_|

Étape 2 : Créer une table dans cette base de données

|__+_|

Étape 3 : Créer un projet Spring Boot et fournir les détails requis

Étape 4 : Ajouter des dépendances JDBC, MySQL et Web

Étape 5 : Une fois le projet créé, vous devez configurer la base de données dans les propriétés de l'application.

|__+_|

Étape 6 : La classe principale application.java doit avoir le code suivant :

|__+_|

Etape 7 : Vous devez créer un contrôleur pour gérer les requêtes HTTP, en mentionnant le code suivant :

|__+_|

Étape 8 : Exécutez enfin ce projet en tant qu'application Java.

Étape 9 : Ouvrez l'URL [localhost:8080/insert], et vous verrez la sortie en tant que saisie de données réussie.

Vous pouvez également aller de l'avant et vérifier si les données sont entrées dans le tableau.

27. Comment activer la prise en charge HTTP/2 dans Spring Boot ?

Vous pouvez activer la prise en charge HTTP/2 dans Spring Boot en :

serveur.http2.enabled=true

28. À quoi servent les annotations @RequestMapping et @RestController dans Spring Boot ?

@RequestMapping@RestController
Cette annotation est utilisée pour fournir les informations de routage et indique à Spring que toute requête HTTP doit être mappée à la méthode respective.Cette annotation est utilisée pour fournir les informations de routage et indique à Spring que toute requête HTTP doit être mappée à la méthode respective.
Pour utiliser cette annotation, vous devez importer org.springframework.web.bind.annotation.RequestMapping ;Pour utiliser cette annotation, vous devez importer org.springframework.web.bind.annoation.RequestMapping ;

Considérez que vous avez une méthode example() qui devrait être mappée avec l'URL /example.

|__+_|

29. Qu'est-ce que Spring Boot CLI et comment exécuter le projet Spring Boot à l'aide de boot CLI ?

Spring Boot CLI est un outil pris en charge par le Spring Framework officiel. Les étapes pour exécuter un projet Spring Boot sont les suivantes :

  • Téléchargez l'outil CLI depuis le site officiel et extrayez le fichier zip. Le dossier bin présent dans la configuration de Spring est utilisé pour exécuter l'application Spring Boot.
  • Étant donné que Spring Boot CLI exécute des fichiers groovy, vous devez créer un fichier groovy pour l'application Spring Boot. Donc, pour ce faire, ouvrez le terminal et remplacez le répertoire actuel par le dossier bin.

Créez un contrôleur comme suit :

|__+_|

30. Quelles sont les différences entre JPA et Hibernate ?

APPHiberner
Il s'agit d'une abstraction d'accès aux données utilisée pour réduire la quantité de code passe-partoutIl s'agit d'une implémentation de l'API Java Persistence et offre les avantages du couplage lâche

Principales questions et réponses de l'entretien d'embauche avec Spring Boot

31. Comment pouvons-nous créer un point de terminaison personnalisé dans Spring Boot Actuator ?

Pour créer un point de terminaison personnalisé dans Spring Boot 2.x, vous pouvez utiliser l'annotation @Endpoint.

Voir également Top 100 des questions et réponses d'entrevue Ansible

Spring Boot expose également les points de terminaison à l'aide de @WebEndpointor, @WebEndpointExtension sur HTTP à l'aide de Spring MVC, Jersey, etc.

32. Que comprenez-vous de Spring Data ?

Les données Spring visent à faciliter l'utilisation par les développeurs de bases de données relationnelles et non relationnelles, de services de données basés sur le cloud et d'autres technologies d'accès aux données.

Donc, fondamentalement, cela facilite l'accès aux données et conserve toujours les données sous-jacentes.

33. Que comprenez-vous de la configuration automatique dans Spring Boot ?

La configuration automatique est utilisée pour configurer automatiquement la configuration requise pour l'application.

Par exemple, si vous avez un bean de source de données présent dans le classpath de l'application, il configure automatiquement le modèle JDBC.

Avec l'aide de la configuration automatique, vous pouvez créer une application Java de manière simple, car elle configure automatiquement les beans, les contrôleurs, etc. requis.

34. Quelles sont les différences entre les annotations @SpringBootApplication et @EnableAutoConfiguration ?

SpringBootApplicationActiver la configuration automatique
Utilisé dans la classe principale ou la classe bootstrapUtilisé pour activer la configuration automatique et l'analyse des composants dans votre projet
Il s'agit d'une combinaison des annotations @Configuration, @ComponentScan et @EnableAutoConfigurationC'est une combinaison des annotations @Configuration et @ComponentScan

35. Quelles sont les étapes pour déployer des applications Web Spring Boot en tant que fichiers JAR et WAR ?

Pour déployer une application web Spring Boot, il vous suffit d'ajouter le plugin suivant dans le fichier pom.xml, ajoutez simplement un élément plugin à pom.xml :

|__+_|

36. Pouvez-vous donner un exemple pour ReadOnly comme vrai dans la gestion des transactions ?

Considérez un scénario dans lequel vous devez lire les données de la base de données.

Par exemple, supposons que vous ayez une base de données clients et que vous souhaitiez lire les détails du client tels que l'ID client, le nom du client et l'ID e-mail du client.

Pour ce faire, vous définirez la lecture seule sur la transaction car nous ne voulons pas vérifier les modifications apportées aux entités.

37. Pouvez-vous expliquer comment déployer sur un autre serveur avec Spring Boot ?

Pour déployer un serveur différent avec Spring Boot, suivez les étapes ci-dessous :

  • Générer un WAR à partir du projet
  • Déployez le fichier WAR sur votre serveur préféré

38. Quelle est la meilleure façon d'exposer la configuration d'application personnalisée avec Spring Boot ?

Une façon d'exposer la configuration d'application personnalisée dans Spring Boot consiste à utiliser l'annotation @Value.

Mais le seul problème avec cette annotation est que toutes les valeurs de configuration seront distribuées dans toute l'application.

Au lieu de cela, vous pouvez utiliser une approche centralisée.

Par approche centralisée, je veux dire que vous pouvez définir un composant de configuration à l'aide de @ConfigurationProperties comme suit :

|__+_|

Selon l'extrait de code ci-dessus, les valeurs configurées dans application.properties seront les suivantes :

exemple.num : 100

exemple.valeur : vrai

exemple.msg : message dynamique

39. Pouvons-nous créer une application non Web dans Spring Boot ?

Oui, nous pouvons créer une application non Web en supprimant les dépendances Web du chemin de classe tout en modifiant la façon dont Spring Boot crée le contexte de l'application.

40. Quelles sont les étapes pour connecter une base de données externe comme MySQL ou Oracle ?

Pour connecter une base de données externe, vous devez suivre les étapes ci-dessous :

  • Commencez par ajouter la dépendance pour MySQL Connector à pom.xml
  • Ensuite, supprimez la dépendance H2 de pom.xml
  • Maintenant, configurez votre base de données MySQL et configurez votre connexion à la base de données MySQL
  • Redémarrez votre projet

Principales questions et réponses de l'entretien d'embauche avec Spring Boot

41. Mentionnez les avantages du fichier YAML par rapport au fichier de propriétés et les différentes façons de charger le fichier YAML au démarrage de Spring.

L'avantage du fichier YAML par rapport à un fichier de propriétés est que les données sont stockées dans un format hiérarchique.

Ainsi, il devient très facile pour les développeurs de déboguer s'il y a un problème. La classe SpringApplication prend en charge les fichiers YAML comme alternative aux propriétés chaque fois que vous utilisez la bibliothèque SnakeYAML sur votre chemin de classe.

Les différentes manières de charger un fichier YAML dans Spring Boot sont les suivantes :

  • Utilisez YamLMapFactoryBean pour charger YAML en tant que carte
  • Utilisez YamLPropertiesFactoryBean pour charger YAML en tant que propriétés

42. Comment Hibernate est-il choisi comme implémentation par défaut pour JPA sans aucune configuration ?

Lorsque nous utilisons la configuration automatique de Spring Boot, la dépendance spring-boot-starter-data-jpa est automatiquement ajoutée au fichier pom.xml.

Maintenant, puisque cette dépendance a une dépendance transitive sur JPA et Hibernate, Spring Boot configure automatiquement Hibernate comme implémentation par défaut pour JPA, chaque fois qu'il voit Hibernate dans le chemin de classe.

43. Que comprenez-vous de Spring Data REST ?

Spring Data REST est utilisé pour exposer les ressources RESTful autour des référentiels Spring Data.

Considérez l'exemple suivant :

|__+_|

44. Dans quelle couche, la frontière d'une transaction doit-elle commencer ?

La limite de la transaction doit commencer à partir de la couche de service puisque la logique de la transaction commerciale est présente dans cette couche elle-même.

45. Que fait path=sample, collectionResourceRel=samplework avec Spring Data Rest ?

|__+_|
  • path – Cette section est utilisée pour mentionner le segment sous lequel la ressource doit être exportée.
  • collectionResourceRel : cette valeur est utilisée pour générer des liens vers la ressource de collection.

46. ​​Expliquez comment enregistrer une configuration automatique personnalisée.

Pour enregistrer une classe de configuration automatique, vous devez mentionner le nom complet sous le fichier META-INF/spring.factories de la clé @EnableAutoConfiguration.

De plus, si nous construisons avec maven, ce fichier doit être placé dans le répertoire resources/META-INT.

47. Comment configurez-vous Log4j pour la journalisation ?

Étant donné que Spring Boot prend en charge Log4j2 pour la journalisation d'une configuration, vous devez exclure Logback et inclure Log4j2 pour la journalisation. Cela ne peut être fait que si vous utilisez le projet starters.

48. Mentionnez les différences entre WAR et les conteneurs intégrés.

GUERREConteneurs intégrés
WAR profite considérablement de Spring BootUn seul composant de Spring Boot est en cours d'amélioration

49. Quelles sont les étapes pour ajouter un code JS personnalisé avec Spring Boot ?

Les étapes pour ajouter un code JS personnalisé avec Spring Boot sont les suivantes :

  • Créez un dossier appelé statique sous le dossier de ressources
  • Dans ce dossier, vous pouvez mettre le contenu statique dans le dossier

Remarque : Juste au cas où le navigateur génère une erreur non autorisée, vous désactivez la sécurité ou recherchez le mot de passe dans le fichier journal, et éventuellement le transmettez dans l'en-tête de la demande.

50. Comment demander à une configuration automatique de se retirer lorsqu'un bean existe ?

Pour demander à une classe de configuration automatique de reculer lorsqu'un faisceau sort, vous devez utiliser l'annotation @ConditionalOnMissingBean.

Les attributs de cette annotation sont les suivants :

  • value : cet attribut stocke le type de beans à vérifier
  • name : cet attribut stocke le nom des beans à vérifier