Je garderai un mémorandum de ce que j'ai appris lorsque j'ai touché Spring Boot pour la première fois de novembre à décembre l'année dernière.
Pour ceux qui veulent toucher Spring Boot à partir de maintenant. Je pense qu'il sera connu de ceux qui l'ont utilisé.
Une API publique externe simple qui renvoie simplement des informations basées sur la valeur d'entrée reçue.

| nom de la classe | Aperçu | 
|---|---|
| Classe RestController | Une classe qui implémente la partie interface de l'API. | 
| Classe de formulaire | Une classe qui contient des informations sur le contenu des demandes des clients et la réponse renvoyée. | 
| Classe RestControllerAdvice | RestController Une classe qui implémente un traitement commun. | 
| Classe de service | Une classe qui implémente la logique métier. | 
| Classe de référentiel | Une classe qui effectue un accès à la base de données. | 
| Classe d'entité | Une classe qui contient les données acquises à partir du DB et les données à entrer dans le DB. | 
Ajoutez @ SpringBootApplication.
| Annotation | Aperçu | 
|---|---|
@EnableAutoConfiguration | 
Le paramètre automatique de Spring Boot est activé et divers paramètres sont automatiquement définis en fonction des dépendances définies. | 
@ComponentScan | 
Une analyse des composants est effectuée et dans l'emballage à analyser@ComponentLa classe avec est automatiquement chargée et gérée par le conteneur DI. La classe qui a scanné les composants@AutowiredPeut être défini sur une variable par. * Reportez-vous à l'exemple de code ci-dessous. | 
@Configuration | 
En l'attribuant, les beans peuvent être enregistrés individuellement et les classes de paramètres peuvent être lues. | 
Diverses classes sont lues et définies par @ ComponentScan et @ EnableAutoConfiguration, et l'application est exécutée.
@ ComponentScan et les packages dans la hiérarchie en dessous seront analysés, donc les classes au-dessus de la classe avec @ ComponentScan seront analysées. Pas lu.SampleApplication.java
@SpringBootApplication
public class SampleApplication {
    public static void main (final String[] args) {
        SpringApplication.run (SampleApplication .class, args);
    }
    @Override
    protected SpringApplicationBuilder configure (final SpringApplicationBuilder builder) {
        return builder.sources (SampleApplication .class);
    }
}
@ RestController. Cible de @ ComponentScan.SampleController.java
/**
 *Contrôleur d'échantillon.
 */
@RestController
@Validated
public class SampleController {
    @Autowired
    private SampleService service; //Associez la classe Service à utiliser.
    @PostMapping (path = "/sample", //Spécifiez le chemin à mapper vers la méthode.
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, //Spécifiez le type de support de la demande à recevoir.
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE) //Spécifiez le MediaType de la réponse à renvoyer.
    @CrossOrigin
    public ResponseEntity<SampleForm> sampleMethod (
        @RequestHeader (value = "sample_key") //Définissez la valeur clé de la valeur reçue de l'en-tête.
        @NotEmpty (message = "sample_key is empty.") //Si vous souhaitez examiner sans utiliser Form, définissez le contrôle ici.
        @Valid String sampleKey, //Définissez une variable qui stocke la valeur reçue de l'en-tête.
        @RequestBody
        @Valid SampleForm form //Définissez la classe Form qui stocke la valeur reçue du corps et la variable qui la stocke.
    ) {
        return new ResponseEntity<> (service.sampleMethod (form.getSampleUserId), HttpStatus.OK);
    }
}
SampleForm.java
@Data
@ToString
public class SampleForm implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonProperty ("sample_user_id") //Définissez la valeur de clé sur JSON.
    @NotEmpty (message = "sampleUserId is empty") //Définissez le contenu de l'examen.
    private String sampleUserId;
    
}
@ RestControllerAdvice. Cible de @ ComponentScan.@ ExceptionHandler, la gestion des erreurs est automatiquement effectuée lorsque l'exception spécifiée est levée.SampleExceptionHandler.java
@RestControllerAdvice
public class SampleExceptionHandler {
    @ExceptionHandler (Exception.class) //Définissez l'exception à capturer.
    @ResponseStatus (HttpStatus.INTERNAL_SERVER_ERROR) //Définissez le code d'état HTTP de la réponse renvoyée lorsque l'exception ci-dessus se produit.
    protected ErrorForm handleInternalServerError (Exception e) {
        logger.error (e);
        return new ErrorForm ("Internal Server Error");
    }
    @RequiredArgsConstructor
    private class ErrorForm implements Serializable {
        private static final long serialVersionUID = 1L;
        private final String message;
    }
}
@ Service. Cible de @ ComponentScan.SampleService.java
@Service
@Transactional //Annule automatiquement lorsqu'une exception se produit.
public class SampleService {
    @Autowired
    private SampleUserRepository sampleUserRepository; //Associez la classe Repository à utiliser.
    public SampleForm returnSampleForm (String sampleUserId) {
        return convertToSampleForm(sampleUserRepository.findBySampleUserId(sampleUserId));
    }
}
@ Repository. Cible de @ ComponentScan.SampleUserRepository.java
@Repository
public interface SampleUserRepository extends JpaRepository<SampleUser, String> { //Définissez la table de destination d'accès et le type de clé primaire.
    SampleUser findBySampleUserId (String sampleUserId); //Définissez les noms de méthode et les arguments selon les conventions de dénomination.
}
@ Entity.SampleUser.java
@Entity
@Table (name = "sample_user") //Définissez le nom de la table à lier.
@Data
public class SampleUser implements Serializable {
    private static final long serialVersionUID = 1L;
    /**Exemple d'ID utilisateur*/
    @Id //Affecté à l'élément de la clé primaire.
    @GeneratedValue (strategy = GenerationType.IDENTITY) //Si vous souhaitez une numérotation automatique, définissez la méthode de numérotation.
    private String sampleUserId;
    /**Exemple de nom d'utilisateur*/
    private String sampleUserName;
}
Recommended Posts