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