Main - fichier principal - RestApplication
Conditions d’achèvement
RestApplication.java
package com.example.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import com.example.rest.Services.MigrationService;
import com.fasterxml.jackson.databind.SerializationFeature;
// Déclaration de la classe principale de l'application Spring Boot
@SpringBootApplication
public class RestApplication implements CommandLineRunner {
// Déclaration d'une variable de type MigrationService pour gérer les migrations de données
private final MigrationService MigrationService;
// Injection de dépendance du service de migration via le constructeur
@Autowired
public RestApplication(MigrationService MigrationService) {
this.MigrationService = MigrationService;
}
// Méthode principale pour démarrer l'application Spring Boot
public static void main(String[] args) {
SpringApplication.run(RestApplication.class, args);
}
// Bean pour encoder les mots de passe avec BCrypt
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
// Bean pour configurer le constructeur de l'ObjectMapper de Jackson
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
// Ne pas échouer si un bean est vide
builder.failOnEmptyBeans(false);
// Désactiver la fonctionnalité qui fait échouer la sérialisation si un bean est vide
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
return builder;
}
// Méthode run qui est exécutée au démarrage de l'application
@Override
public void run(String... args) throws Exception {
// Création d'objets échantillons
MigrationService.createSampleObjects();
// Ajout de nouveaux utilisateurs, profils et comptes
MigrationService.addNewUsersProfilsAccounts();
// Ajout d'objets dans l'inventaire
MigrationService.ajouterDesObjetsDansInventaire();
// Ajout de jeux aux profils
MigrationService.ajouterGamesToProfils();
}
}
1. Déclaration de la Classe Principale
@SpringBootApplication
public class RestApplication implements CommandLineRunner {
@SpringBootApplicationest une annotation qui indique que cette classe est la classe principale de l'application Spring Boot.implements CommandLineRunnersignifie que cette classe implémente l'interfaceCommandLineRunner, ce qui permet d'exécuter du code au démarrage de l'application.
2. Injection de Dépendance
private final MigrationService MigrationService;
@Autowired
public RestApplication(MigrationService MigrationService) {
this.MigrationService = MigrationService;
}
MigrationServiceest injecté dans cette classe via le constructeur. Cela permet d'accéder aux méthodes deMigrationServicedans cette classe.@Autowiredest une annotation qui permet l'injection de dépendance automatique par Spring.
3. Méthode Principale
public static void main(String[] args) {
SpringApplication.run(RestApplication.class, args);
}
- C'es
tla méthode principale qui démarre l'application Spring Boot.
4. Configuration des Beans
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.failOnEmptyBeans(false);
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
return builder;
}
- Ces méthodes définissent des beans qui peuvent être injectés dans d'autres parties de l'application.
BCryptPasswordEncoderest utilisé pour encoder les mots de passe.Jackson2ObjectMapperBuilderest configuré pour ne pas échouer lors de la sérialisation si un bean est vide.
5. Exécution au Démarrage
@Override
public void run(String... args) throws Exception {
MigrationService.createSampleObjects();
MigrationService.addNewUsersProfilsAccounts();
MigrationService.ajouterDesObjetsDansInventaire();
MigrationService.ajouterGamesToProfils();
}
- La méthode
runest exécutée au démarrage de l'application, car cette classe implémenteCommandLineRunner. - Cette méthode appelle plusieurs méthodes de
MigrationServicepour peupler la base de données avec des données échantillons.
Conclusion
Ce code est un exemple typique d'une application Spring Boot avec injection de dépendance, configuration de beans, et exécution de code au démarrage. Il utilise un service de migration pour peupler la base de données avec des données échantillons lors du démarrage de l'application.
Modifié le: mercredi 27 septembre 2023, 08:46