Différences entre Spring et Microservices
Différences entre Spring et Microservices
En Spring Boot, les services sont des composants qui encapsulent la logique métier
de votre application.
Ils sont utilisés par les contrôleurs pour effectuer des opérations spécifiques et
abstraire la logique métier du contrôleur.
Les services peuvent être injectés dans les contrôleurs et d'autres composants,
favorisant la modularité et la réutilisabilité du code.
En résumé, les services sont responsables de la logique métier, tandis que les
contrôleurs gèrent l'interaction avec les clients HTTP
4- l'annotation @Autowired
Brièvement, l'annotation @Autowired sert à indiquer à Spring d'injecter
automatiquement les dépendances requises dans une classe.
Cela facilite la gestion des dépendances sans avoir à créer manuellement les
instances des dépendances.
Vous pouvez utiliser @Autowired pour injecter des dépendances dans des champs, des
constructeurs ou
des méthodes dans les composants gérés par Spring, tels que les contrôleurs, les
services, etc.
8- repository
*Accès aux données avec Spring Data JPA :
Spring Data JPA est une extension de Spring Data qui simplifie considérablement
l'implémentation de la couche d'accès aux données en utilisant Java Persistence API
(JPA).
Le "repository" dans ce contexte est une interface qui étend JpaRepository ou une
interface similaire fournie par Spring Data JPA.
Les méthodes définies dans le "repository" peuvent être simples (telles que
findById, findAll, save, delete, etc.) ou peuvent définir des requêtes
personnalisées basées sur la convention de nommage.
Par exemple, si vous avez une entité User, vous pouvez définir une méthode
findByUsername(String username) dans votre "repository" pour rechercher un
utilisateur par son nom d'utilisateur.
1. **`findById` :**
- **Rôle :** Recherche une entité par son identifiant.
- **Exemple :** `Optional<User> findById(Long id);`
2. **`findAll` :**
- **Rôle :** Récupère toutes les entités de la table.
- **Exemple :** `List<User> findAll();`
3. **`save` :**
- **Rôle :** Enregistre une entité dans la base de données.
- **Exemple :** `User save(User user);`
4. **`deleteById` :**
- **Rôle :** Supprime une entité par son identifiant.
- **Exemple :** `void deleteById(Long id);`
5. **`findBy...` :**
- **Rôle :** Recherche une entité en fonction d'un critère spécifique, basé sur
la convention de nommage.
- **Exemple :** `List<User> findByLastName(String lastName);`
6. **`count` :**
- **Rôle :** Compte le nombre total d'entités dans la table.
- **Exemple :** `long count();`
7. **`existsById` :**
- **Rôle :** Vérifie si une entité avec l'identifiant donné existe.
- **Exemple :** `boolean existsById(Long id);`
8. **`delete` :**
- **Rôle :** Supprime une entité de la base de données.
- **Exemple :** `void delete(User user);`
9. **`findBy...And...` :**
- **Rôle :** Recherche une entité en utilisant plusieurs critères.
- **Exemple :** `List<User> findByFirstNameAndLastName(String firstName, String
lastName);`
Ces méthodes sont générées automatiquement par Spring Data JPA en fonction des noms
des méthodes dans votre interface de "repository".
Elles permettent de créer des requêtes SQL en fonction des noms des méthodes,
ce qui simplifie grandement le code nécessaire pour effectuer des opérations de
base sur la base de données.
Si ces méthodes conventionnelles ne suffisent pas, vous pouvez également définir
des requêtes personnalisées en utilisant l'annotation `@Query`.
13 - Sauvegardons Student
- pour ce faire nous allons creer une classe configuration qui nous permettra de
definir des enregistrement specifique que nous allons sauvegarder dans la base de
donneés