Spring Core Flashcards

1
Q

Decrire Spring Core en quelques mots

A

C’est un conteneur qui gère des composants au sein d’un contexte applicatif.

Ces composants (ou beans) sont associés en utilisant l’injection de dépendances dans le contexte d’application de Spring pour construire une application complète.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quels services sont fournis par Spring au delà de Core ?

A
  • Un framework Web
  • Différents moyens de gérer la persistence des données
  • Un framework de sécurité
  • L’intégration avec d’autres systèmes
  • La supervision en temps réel
  • Le support des micro-services
  • Un modèle de programmation réactive
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Expliquer l’injection de dépendances

A

Lorsqu’un composant a besoin d’autres composants, il y a deux approches:

  1. Une application classique laisse ce composant créer et gérer le cycle de vie de ses dépendances.
  2. Une application Spring introduit un conteneur qui va
    • gérer le cycle de vie des composants
    • injecter les dépendances déclarées par chaque composant.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quels sont les 3 moyens d’injecter des dépendances avec Spring ?

A
  1. Par constructeur
  2. Par setter
  3. Par propriété
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quel type d’injection de dépendances est préférable et pourquoi ?

A

Par constructeur pour les dépendances obligatoires (et par setter pour d’éventuelles dépendances optionnelles)

  • Conception: Ce type d’injection aide à prendre conscience qu’un problème existe quand un bean a trop de dépendances et qu’il se transforme en God-class. Le principe SRP est violé.
  • Les dépendances devraient être immuables
  • Seul ce type d’injection assure que
    • les dépendances obligatoires sont bien présentes.
    • Les dépendances sont immuables
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quels sont les différents moyens de configurer Spring ?

A
  • Configuration XML
  • Configuration Java au moyen de @Configuration et de @Bean
  • Configuration automatique
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

A quoi servent @Configuration et @Bean ?

A

@Configuration annote une classe qui va enrichir le contexte applicatif avec un certain nombre de composants.

Ses méthodes sont annotées avec @Bean. Chaque méthode crée un composant dont l’id sera par défaut le nom que la méthode qui a servi à le créer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Comment fonctionne la configuration automatique ?

A
  • Spring scanne le classpath pour trouver les classes annotées de manière appropriée et enrichit le contexte applicatif
  • Il est également capable d’injecter automatiquement les dépendances dans les composants.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quelle annotation est utilisée pour indiquer qu’on souhaite injecter une dépendance ?

A

@Autowired

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Comment créer un repository avec Spring Core ?

A
  1. Créer une interface pour le repository
  2. Implémenter cette interface en injectant JdbcTemplate
  3. Utiliser JdbcTemplate / SimpleJdbcInsert
  4. Annoter l’implémentation avec @Repository
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quel est l’élément central d’un repository JDBC ?

A

JdbcTemplate contient les méthodes nécessaires pour requêter (query, queryForObject) et mettre à jour (update) la base.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Comment Spring JDBC fait-il le lien entre une ligne d’une table et un objet Java ?

A

Au moyen d’une implémentation de

RowMapper.mapRow(ResultSet rs, int rowNum)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quelle est la philosophie de Spring concernant les exceptions de persistence ?

A
  • Isoler l’application d’une solution de persistence particulière en définissant son propre ensemble d’exceptions. Quand le gestionnaire de persistence rencontre une exception, elle est traduite en une expression Spring.
  • La mère de toutes ces exceptions est l’exception non-vérifiée DataAccessException, car Spring considère que la plupart du temps on ne saurait pas quoi faire dans un catch.
  • Spring fournit une liste très longue d’exceptions qui indiquent très précisément l’origine de l’erreur rencontrée (au contraire de JDBC)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce-que l’annotation @Repository a de particulier ?

A

Spring va détecter les exceptions de persistence spécifiques à la plateforme et les transformer en exceptions Spring.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quelles sont les différentes sources pour les propriétés du contexte Spring ?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Comment définir la portée d’un bean Spring ?

A

@Scope

17
Q

Quelles sont les 4 différentes portées des beans Spring ?

A
  • Singleton (défaut)
  • Prototype
  • Request
  • Session
18
Q

Comment définir une implémentation par défaut si une interface en possède plusieurs ?

A

@Primary

19
Q

Si une interface possède plusieurs implémentations, comment guider le choix de Spring ?

A
  • @Primary
  • @Qualifier
    • Sur le bean pour le définir
    • Sur le point d’injection pour l’utiliser
20
Q

A quoi sert l’annotation @ResponseBody ?

A

Elle indique qu’une méthode d’un contrôleur va positionner sa valeur de retour dans le corps de la réponse HTTP, plutot que d’être mis dans un modèle pour l’évaluation d’une vue côté serveur.

21
Q

A quoi sert ResponseEntity<t> ?</t>

A

Elle permet de manipuler finement le contenu de la réponse HTTP:

  • Headers
  • Corps
  • Statut
22
Q

A quoi sert @RequestBody ?

A

Elle indique que le paramètre annoté sera renseigné avec la valeur provenant du corps de la requête HTTP.

23
Q

Quels sont les différents moyens de consommer une API REST ?

A
  • RestTemplate: client synchrone
  • WebClient: client asynchrone, réactif
  • Traverson: client synchrone, adapté aux API hypermedia