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@Component La classe avec est automatiquement chargée et gérée par le conteneur DI. La classe qui a scanné les composants@Autowired Peut ê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