Préparation à la certification professionnelle du printemps. Botte de printemps

Salutations à tous. Cet article couvrira les questions clés sur le sujet de "Spring Boot". Il est destiné aux développeurs débutants et peut être utile pour préparer une interview. Il s'est avéré être assez compact par rapport à d'autres articles.


Table des matières
  1. Injection de dépendance, conteneur, IoC, haricots
  2. AOP (programmation orientée aspect)
  3. JDBC, transactions, JPA, données de printemps
  4. Botte de printemps
  5. Spring mvc
  6. Sécurité printanière
  7. REPOS
  8. Test




Des questions


Qu'est-ce que la botte de printemps?

Spring Boot est un ensemble de modules préconfigurés qui fonctionnent dans Spring Framework et simplifient la configuration d'une application Spring.


Voici quelques modules centraux:


  • Dépendances de démarrage de printemps. Contient des dépendances de version.
  • Parent-démarrage-Spring-boot. Parent pom.xml
  • Démarreurs à ressort. Module parent pour les débutants
  • Spring-boot-autoconfigure. Contient des modules pour les démarreurs à réglage automatique
  • Actionneur à ressort. Vous permet de surveiller l'application et de gérer sa création

Quels sont les avantages de Spring Boot?
  • Configurer automatiquement de nombreux paramètres pour éviter le code passe-partout
  • Vous permet de configurer facilement l'application lorsque les paramètres par défaut ne conviennent pas
  • Le projet Spring Boot peut être compilé dans un fichier JAR autonome
  • Fournit un ensemble de dépendances déjà testées pour fonctionner correctement les unes avec les autres
  • Il possède des conteneurs Web intégrés qui facilitent le test de l'application.

Comment fonctionne-t-il? Comment comprend-il quoi et comment configurer?

Il suppose ce dont vous avez besoin en fonction des dépendances du chemin de classe. «Accord de configuration» - il configurera automatiquement Spring avec des paramètres spécialement sélectionnés, qui peuvent ensuite être remplacés.


Il existe plusieurs annotations pour cela, @ConditionalOnClass , @ConditionalOnBean , @ConditionalOnMissingBean et @ConditionalOnMissingClass , qui vous permettent d'appliquer des conditions aux classes @ Configuration et @ Bean dans ces classes.


Par exemple:


  • Un bean ne sera créé que si une dépendance spécifique se trouve dans le chemin de classe.


    Utilisez @ConditionalOnClass , en définissant le nom de classe à partir de classpath ici.


  • Un bean ne sera créé que s'il n'y a pas de bean de ce type ou portant ce nom dans le conteneur.


    Utilisez @ConditionalOnMissingBean , en définissant le nom ou le type du bean pour y vérifier.



Qu'est-ce qui affecte la configuration de Spring Boot?

Il existe une liste d'annotations de condition, chacune étant utilisée pour contrôler la création de beans. Voici une liste de ces annotations (en fait il y en a plus):


Annotation
Condition de réussite
@ConditionalOnClass
Présence de classe dans classpath
@ConditionalOnMissingClass
Classe manquante dans le chemin de classe
@ConditionalOnBean
La présence d'un bac ou de son type (classe de bean)
@ConditionalOnMissingBean
Absence de bac ou de son type
@ConditionalOnProperty
Présence de la propriété Spring
@ConditionalOnResource
La présence d'un fichier de ressources
@ConditionalOnWebApplication
S'il s'agit d'une application Web, WebApplicationContext sera utilisé.
@ConditionalOnNotWebApplication
S'il ne s'agit pas d'une application Web

Comment les propriétés sont-elles définies? Où se trouve le PropertySource par défaut dans Spring Boot?

Spring Boot utilise un ordre spécial de PropertySource pour autoriser la substitution des valeurs de propriété. Voici l'ordre des sources pour obtenir les propriétés de l'application:


  1. Paramètres généraux du répertoire ~ / spring-boot devtools.properties
  2. Paramètres de l'annotation @TestPropertySource des tests
  3. Attributs @ SpringBootTest # propriétés
  4. Arguments de ligne de commande
  5. Propriétés de SPRING_APPLICATION_JSON
  6. Paramètres d'initialisation de ServletConfig
  7. Paramètres d'initialisation de ServletContext
  8. Attributs JNDI de java: comp / env
  9. Propriétés système Java (System.getProperties ())
  10. Variables OS
  11. RandomValueProperySource
  12. Propriétés des profils, par exemple YAML ou application- {profile} .properties
  13. application.properties et yaml pas de votre pot
  14. application.properties et yaml de votre pot
  15. @PropertySource sur la classe @ Configuration
  16. Propriété par défaut (définie via SpringApplication.setDefaultProperties() )

Ajoutez également que property.yml remplace toujours property.properties.


Décrivez les principales annotations et configurations pour Spring Boot?

L' @SpringBootApplication fournit 3 propriétés:


  • @EnableAutoConfiguration - active le mécanisme de configuration automatique de Spring Boot
  • @ComponentScan - active l'analyse des composants dans le package de la classe où il se trouve
  • @Configuration - vous permet d'enregistrer des informations supplémentaires. haricots en contexte

Voici d'autres annotations clés:


@EnableConfigurationProperties - vous permet d'utiliser des @ConfigurationProperties avec l'annotation @ConfigurationProperties


@ConfigurationProperties - vous permet d'associer des fichiers à partir de fichiers avec des bacs


@WebMvcTest - utilisé pour les tests Spring MVC


@SpringBootTest - utilisé lorsque vous avez besoin des fonctions Spring Boot dans les tests


@DataJpaTest - utilisé pour tester les composants JPA


Quelles sont les différences entre un conteneur en ligne et un WAR?

Le conteneur intégré est le serveur fourni avec l'application finale, tandis que WAR est une archive qui peut être déployée sur un serveur externe.


Les conteneurs de servlets sont bons pour gérer plusieurs applications sur le même hôte, mais ils ne sont pas très utiles pour gérer une seule application.


Avec un environnement cloud, l'utilisation d'une application par machine virtuelle est la méthode préférée et la plus courante. Les frameworks modernes veulent être plus compatibles avec les clouds, ils passent donc à des conteneurs intégrés.


Quels conteneurs intégrés Spring prend-il en charge?

Spring Boot prend en charge Tomcat, Jetty et Undertow.
La valeur par défaut est TomCat. Afin de changer le conteneur, ajoutez simplement la dépendance souhaitée dans pom.xml.


Que fait @EnableAutoConfiguration?

Il vous permet d'utiliser la configuration automatique. La configuration automatique dans Spring Boot tente de créer et de configurer des beans en fonction des dépendances dans le chemin de classe, afin de permettre au développeur de commencer rapidement à travailler avec diverses technologies et de supprimer le code passe-partout.


Spring Boot analyse-t-il les composants? Où les recherche-t-il par défaut?

Oui, c'est le cas s'il existe une annotation @SpringBootApplication qui contient une annotation @ComponentScanning .


Par défaut, Spring recherche les beans dans le même package que la classe annotée. Cela peut être remplacé en spécifiant des classes (ou package) dans les scanBasePackage scanBasePackageClasses ou scanBasePackage .


Qu'est-ce que Spring Boot Starter POM? Comment cela peut-il être utile?

Les démarreurs fournissent un ensemble de descripteurs de dépendance pratiques que vous pouvez inclure dans votre application. Vous obtenez une seule source pour Spring et les technologies connexes sans avoir à rechercher et copier-coller les descripteurs de déploiement.
Par exemple, si vous souhaitez démarrer avec Spring JPA, ajoutez simplement la dépendance spring-boot-starter-data-jpa à votre projet.


Les démarreurs contiennent la plupart des dépendances dont vous avez besoin pour exécuter le projet, travailler rapidement et de manière cohérente et prendre en charge des ensembles de dépendances transitives.


Pouvez-vous contrôler la journalisation via Spring Boot?

Oui Par défaut, les messages de priorité ERROR, WARN, INFO seront affichés dans l'application. Pour activer la sortie des niveaux DEBUG ou TRACE, vous devez utiliser les --trace --debug / --trace ou définir les propriétés de la propriété debug / trace = true.


 logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR 

Par défaut, Sprin Boot se connecte uniquement à la console. Si vous souhaitez enregistrer des événements dans un fichier, vous devez définir les propriétés logging.file ou logging.path sur true (par exemple, dans application.properties).


Enregistrement des couleurs


Dans les consoles prenant en charge ANSI, pour améliorer la lisibilité, les messages de différents niveaux peuvent être mis en évidence avec différentes couleurs. Voici comment il est configuré dans le fichier de propriétés:


 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow} 

Si vous voulez écrire allé à d'autres fichiers, vous pouvez également configurer ceci (YAML):


 logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG 

Source: https://habr.com/ru/post/fr471312/


All Articles