[JAVA] Zusammenfassung dessen, was ich über Spring Boot gelernt habe

Einführung

Ich werde ein Memorandum darüber aufbewahren, was ich gelernt habe, als ich Spring Boot von November bis Dezember letzten Jahres zum ersten Mal berührt habe.

Zielgruppe

Für diejenigen, die Spring Boot von nun an berühren möchten. Ich denke, dass es denen bekannt sein wird, die es benutzt haben.

Was ich gemacht habe

Eine einfache externe öffentliche API, die einfach Informationen basierend auf dem empfangenen Eingabewert zurückgibt.

Verschiedene Dinge verwendet

Konfiguration der Anwendung diesmal implementiert

クラス構成.png

Übersicht über verschiedene Klassen

Name der Klasse Überblick
RestController-Klasse Eine Klasse, die den Schnittstellenteil der API implementiert.
Formularklasse Eine Klasse, die Informationen zum Inhalt von Anforderungen von Clients und zur zurückgegebenen Antwort enthält.
RestControllerAdvice-Klasse RestController Eine Klasse, die die allgemeine Verarbeitung implementiert.
Serviceklasse Eine Klasse, die Geschäftslogik implementiert.
Repository-Klasse Eine Klasse, die DB-Zugriff ausführt.
Entitätsklasse Eine Klasse, die die von der Datenbank erfassten Daten und die in die Datenbank einzugebenden Daten enthält.

Beschreibungen und Beispiele verschiedener Klassen

Hauptklasse

Fügen Sie "@ SpringBootApplication" hinzu.

Anmerkung Überblick
@EnableAutoConfiguration Die automatische Einstellung von Spring Boot ist aktiviert und verschiedene Einstellungen werden automatisch entsprechend den definierten Abhängigkeiten vorgenommen.
@ComponentScan Ein Komponentenscan wird durchgeführt und in dem zu scannenden Paket@ComponentDie Klasse mit wird automatisch vom DI-Container geladen und verwaltet. Die Klasse, die die Komponenten gescannt hat@AutowiredKann von auf eine Variable gesetzt werden. * Siehe den folgenden Beispielcode.
@Configuration Durch Zuweisen können Beans einzeln registriert und Einstellungsklassen gelesen werden.

Verschiedene Klassen werden von @ ComponentScan und @ EnableAutoConfiguration gelesen und festgelegt, und die Anwendung wird ausgeführt.

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-Klasse

SampleController.java


/**
 *Beispielsteuerung.
 */
@RestController
@Validated
public class SampleController {

    @Autowired
    private SampleService service; //Ordnen Sie die zu verwendende Serviceklasse zu.

    @PostMapping (path = "/sample", //Geben Sie den Pfad an, der der Methode zugeordnet werden soll.
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, //Geben Sie den Medientyp der zu empfangenden Anforderung an.
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE) //Geben Sie den Medientyp der zurückzugebenden Antwort an.
    @CrossOrigin
    public ResponseEntity<SampleForm> sampleMethod (
        @RequestHeader (value = "sample_key") //Definieren Sie den Schlüsselwert des vom Header empfangenen Werts.
        @NotEmpty (message = "sample_key is empty.") //Wenn Sie ohne Verwendung des Formulars eine Prüfung durchführen möchten, definieren Sie die Prüfung hier.
        @Valid String sampleKey, //Definieren Sie eine Variable, die den vom Header empfangenen Wert speichert.
        @RequestBody
        @Valid SampleForm form //Definieren Sie die Form-Klasse, in der der vom Text empfangene Wert gespeichert ist, und die Variable, in der er gespeichert ist.
    ) {
        return new ResponseEntity<> (service.sampleMethod (form.getSampleUserId), HttpStatus.OK);
    }
}

Formularklasse

SampleForm.java


@Data
@ToString
public class SampleForm implements Serializable {

    private static final long serialVersionUID = 1L;

    @JsonProperty ("sample_user_id") //Definieren Sie den Schlüsselwert in JSON.
    @NotEmpty (message = "sampleUserId is empty") //Definieren Sie den Inhalt der Prüfung.
    private String sampleUserId;
    
}

RestControllerAdvice-Klasse

SampleExceptionHandler.java


@RestControllerAdvice
public class SampleExceptionHandler {

    @ExceptionHandler (Exception.class) //Definieren Sie die zu fangende Ausnahme.
    @ResponseStatus (HttpStatus.INTERNAL_SERVER_ERROR) //Definieren Sie den HTTP-Statuscode der Antwort, die zurückgegeben wird, wenn die obige Ausnahme auftritt.
    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;
    }
}

Serviceklasse

SampleService.java


@Service
@Transactional //Rollback automatisch, wenn eine Ausnahme auftritt.
public class SampleService {

    @Autowired
    private SampleUserRepository sampleUserRepository; //Ordnen Sie die zu verwendende Repository-Klasse zu.

    public SampleForm returnSampleForm (String sampleUserId) {
        return convertToSampleForm(sampleUserRepository.findBySampleUserId(sampleUserId));
    }
}

Repository-Klasse

SampleUserRepository.java


@Repository
public interface SampleUserRepository extends JpaRepository<SampleUser, String> { //Definieren Sie die Zugriffszieltabelle und den Primärschlüsseltyp.
    SampleUser findBySampleUserId (String sampleUserId); //Definieren Sie Methodennamen und Argumente gemäß den Namenskonventionen.
}

Entitätsklasse

SampleUser.java


@Entity
@Table (name = "sample_user") //Definieren Sie den zu verknüpfenden Tabellennamen.
@Data
public class SampleUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**Beispielbenutzer-ID*/
    @Id //Dem Element des Primärschlüssels zugewiesen.
    @GeneratedValue (strategy = GenerationType.IDENTITY) //Wenn Sie eine automatische Nummerierung wünschen, definieren Sie die Nummerierungsmethode.
    private String sampleUserId;

    /**Beispiel Benutzername*/
    private String sampleUserName;
}

Referenzseite

Recommended Posts

Zusammenfassung dessen, was ich über Spring Boot gelernt habe
Zusammenfassung dessen, was ich in Spring Batch gelernt habe
Was ich über Kotlin gelernt habe
Was ich gelernt habe
Über DI des Frühlings ①
Was ich gelernt habe ② ~ Mock ~
Über DI des Frühlings ②
Was ich gelernt habe ~ ~ DJUnit ~
Spring Boot 2.2 Dokumentzusammenfassung
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
[Spring Boot] Ich dachte über testbaren Code von DI nach
Ich werde sowieso schreiben, was ich über Docker gelernt habe (zweite)
Ich werde sowieso schreiben, was ich über Docker gelernt habe (zuerst)
Was ich über Java 8 recherchiert habe
Was ich über Java 6 recherchiert habe
Was du über Hashing gelernt hast
Was ich über Java 9 recherchiert habe
Was Sie über Symbole gelernt haben
Was ich über Java 7 recherchiert habe
Was ich über Java 5 recherchiert habe
Über die Funktion von Spring Boot aufgrund unterschiedlicher Versionen
Was ich beim Update auf Spring Boot 1.5.12 behoben habe ・ Wovon ich süchtig war
Was ich aus dem Studium von Rails gelernt habe
Spring Framework 5.0 Zusammenfassung der wichtigsten Änderungen
Nachricht erlöschen (Spring Boot)
Über das Binden der Spring AOP Annotation
Was ist @Autowired im Spring Boot?
Was ich mit Java Gold gelernt habe
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Was ich mit Java Silver gelernt habe
Was ich über Java-Lernen recherchiert habe
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Hier ist eine Zusammenfassung dessen, worauf ich in letzter Zeit neugierig war
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Was ist eine Spring Boot-Originaldatei?
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.
Was ist ein Test? ・ Über die Wichtigkeit eines Tests
Nehmen Sie, was Sie über Java-Reflexion gelernt haben
Über den Frühling ③
Informationen zur ersten Anzeige von Spring Framework
Zusammenfassung der Teilnahme am JJUG CCC 2019 Spring
WebMvcConfigurer-Memorandum von Spring Boot 2.0 (Spring 5)
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Ich war süchtig nach Spring's @Transactional
Zusammenfassung der Grundeinstellungen für Spring Boot, Doma2, Gradle
Was ich aus der Java-Geldberechnung gelernt habe
Zusammenfassung der Punkte, über die ich mir bei der Migration von Java nach Kotlin Sorgen gemacht habe
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
[Persönliches Memo] Ich habe etwas über Modifikatoren gelernt
Über den offiziellen Startleitfaden für Spring Framework
[FCM] Implementierung der Nachrichtenübertragung mit FCM + Spring Boot
[Rails] Ich habe etwas über Datenbankdatentypen gelernt!
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie