Detaillierte Analyse der Spring Boot-Anmerkungen

 1. Globale Ausnahmebehandlung

@ControllerAdvice : Enthält @Component. Kann gescannt werden. Behandeln Sie Ausnahmen einheitlich.

@ExceptionHandler (Exception.class): Wird für die Methode verwendet, um anzugeben, dass die folgende Methode ausgeführt wird, wenn diese Ausnahme auftritt .

2. Liste der Anmerkungen   

@SpringBootApplication :

Enthält Anmerkungen zu @ComponentScan, @Configuration und @EnableAutoConfiguration.

Unter anderem lässt @ComponentScan Spring Boot die Konfigurationsklasse scannen und dem Programmkontext hinzufügen.

@Configuration  entspricht der XML-Konfigurationsdatei von spring. Java-Code kann zur Überprüfung der Typensicherheit verwendet werden.

@EnableAutoConfiguration  automatische Konfiguration.

Das Scannen von ComponentScan-Komponenten kann einige Beans automatisch erkennen und zusammenstellen.

@Component kann mit CommandLineRunner verwendet werden, um einige grundlegende Aufgaben auszuführen, nachdem das Programm gestartet wurde.

Die Annotation @RestController ist eine Sammlung von @Controller und @ResponseBody, die angibt, dass es sich um eine Controller-Bean handelt. Der Rückgabewert der Funktion wird direkt in den HTTP-Antworttext eingegeben, der ein Controller im REST-Stil ist.

@Autowired wird automatisch importiert. @PathVariable ruft die Parameter ab. @JsonBackReference löst das Problem verschachtelter externer Links.

@RepositoryRestResourcepublic wird in Verbindung mit Spring-Boot-Starter-Data-Rest verwendet.

3. Detaillierte Erläuterung der Anmerkungen

@SpringBootApplication : Deklarieren Sie, dass Spring Boot das Programm automatisch nach Bedarf konfiguriert. Diese Konfiguration entspricht den drei Konfigurationen von @Configuration, @EnableAutoConfiguration und @ComponentScan.

package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@ResponseBody : Gibt an, dass das Rückgabeergebnis dieser Methode direkt in den HTTP-Antworttext geschrieben wird, der im Allgemeinen beim asynchronen Abrufen von Daten verwendet wird und zum Erstellen einer RESTful-API verwendet wird.

Nach der Verwendung von @RequestMapping wird der Rückgabewert normalerweise als Sprungpfad analysiert. Nach dem Hinzufügen von @responsebody wird das Rückgabeergebnis nicht als Sprungpfad analysiert, sondern direkt in den HTTP-Antworttext geschrieben.

Um beispielsweise JSON-Daten asynchron abzurufen, werden nach dem Hinzufügen von @responsebody die JSON-Daten direkt zurückgegeben.

Diese Anmerkung wird im Allgemeinen in Verbindung mit @RequestMapping verwendet. Beispielcode:

@RequestMapping(“/demo”)
@ResponseBody
public String test(){
    return”ok”;
}

@Controller : Wird zum Definieren der Controller-Klasse verwendet. Im Frühjahrsprojekt ist der Controller dafür verantwortlich, die vom Benutzer gesendete URL-Anforderung an die entsprechende Service-Schnittstelle (Service-Schicht) weiterzuleiten.

Im Allgemeinen befindet sich diese Annotation in der Klasse, und normalerweise muss die Methode mit der Annotation @RequestMapping zusammenarbeiten.

Beispielcode:

@Controller
@RequestMapping(“/demo”)
public class DemoController {
    @Autowired
    private DemoInfoService demoInfoService;

    @RequestMapping("/hello")
    public String hello(Map map){
        System.out.println("DemoController.hello()");
        map.put("hello","from TemplateController.helloHtml");
        return"/hello";
    }
}

@RestController : Dient zum Kommentieren von Komponenten der Steuerebene (z. B. Aktionen in Streben), einer Sammlung von @ResponseBody und @Controller.

package com.kfit.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(“/demo2”)
publicclass DemoController2 {

    @RequestMapping("/test")
    public String test(){
        return"ok";
    }
}

@RequestMapping : Geben Sie Routing-Informationen an, die für die Zuordnung von URLs zu bestimmten Funktionen im Controller verantwortlich sind.

@EnableAutoConfiguration : Spring Boot- Autokonfiguration : Versuchen Sie, Ihre Spring-Anwendung basierend auf den von Ihnen hinzugefügten JAR-Abhängigkeiten automatisch zu konfigurieren.

Wenn beispielsweise HSQLDB in Ihrem Klassenpfad vorhanden ist und Sie keine Datenbankverbindungs-Beans manuell konfiguriert haben, konfigurieren wir automatisch eine speicherinterne Datenbank. "

Sie können einer @ Configuration-Klasse Anmerkungen zu @EnableAutoConfiguration oder @SpringBootApplication hinzufügen, um die automatische Konfiguration auszuwählen.

Wenn Sie feststellen, dass bestimmte Klassen für die automatische Konfiguration, die Sie nicht möchten, angewendet werden, können Sie sie mithilfe des Ausschlussattributs der Annotation @EnableAutoConfiguration deaktivieren.

@ComponentScan : Gibt an, dass diese Klasse Scan-Komponenten automatisch erkennt .

Persönliches Verständnis entspricht dem Scannen nach Klassen, die mit @Component, @Controller, @Service usw. versehen sind, und dem Registrieren als Beans. Sie können automatisch alle Spring-Komponenten erfassen, einschließlich @Configuration-Klassen.

Wir verwenden häufig die Annotation @ComponentScan, um nach Beans zu suchen und diese in Verbindung mit der Annotation @Autowired zu importieren. Kann automatisch alle Spring-Komponenten erfassen, einschließlich @ Configuration-Klassen.

Wenn keine Konfiguration vorhanden ist, scannt Spring Boot das Paket, in dem sich die Startklasse befindet, und die Klassen unter den Unterpaketen mit @Service, @Repository und anderen Anmerkungen.

@Configuration : Entspricht der herkömmlichen XML-Konfigurationsdatei. Wenn einige Bibliotheken von Drittanbietern die XML-Datei verwenden müssen, wird empfohlen, weiterhin die @Configuration-Klasse als Hauptkonfigurationsklasse des Projekts zu verwenden. Sie können die @ verwenden ImportResource-Annotation zum Laden der XML-Konfigurationsdatei.

@Import : Wird zum Importieren anderer Konfigurationsklassen verwendet. @ImportResource : Wird zum Laden der XML-Konfigurationsdatei verwendet. @Autowired : Importiert automatisch abhängige Beans

@Service : Wird im Allgemeinen zum Dekorieren von Komponenten der Serviceschicht verwendet

@Repository : Durch die Verwendung der Annotation @Repository kann sichergestellt werden, dass DAO oder Repositorys eine Ausnahmeübersetzung bereitstellen. Die durch diese Annotation geänderte DAO- oder Repositorys-Klasse wird von ComponetScan erkannt und konfiguriert, und es müssen keine XML-Konfigurationselemente für sie bereitgestellt werden.

@Bean : Die Annotationsmethode @Bean entspricht der in XML konfigurierten Bean.

@Value : Fügen Sie den Wert der in Spring boot application.properties konfigurierten Eigenschaft ein. Beispielcode:

@Value(value = “#{message}”)
private String message;

@Inject : Entspricht dem Standardwert @Autowired, es ist jedoch kein Attribut erforderlich.

@Component : Bezieht sich auf die Komponente im Allgemeinen. Wenn die Komponente nicht gut klassifiziert ist, können wir diese Anmerkung verwenden, um sie zu markieren.

@Bean : Es entspricht dem XML, das über der Methode und nicht der Klasse platziert ist. Dies bedeutet, dass eine Bean bis zum Frühjahr generiert und verwaltet wird.

@AutoWired : Abhängige Beans automatisch importieren. byType-Methode. Verwenden Sie die konfigurierte Bean, um die Zusammenstellung von Attributen und Methoden abzuschließen. Sie kann Variablen, Methoden und Konstruktoren von Klassenmitgliedern mit Anmerkungen versehen, um die Arbeit der automatischen Zusammenstellung abzuschließen. Wenn (erforderlich = falsch) hinzugefügt wird, wird kein Fehler gemeldet, auch wenn die Bean nicht gefunden wird.

@Qualifier : Wenn mehrere Beans desselben Typs vorhanden sind, können Sie @Qualifier ("Name") angeben. Wird in Verbindung mit @Autowired verwendet. Der @Qualifier-qualifizierte Deskriptor kann nicht nur entsprechend dem Namen injiziert werden, sondern auch zur genaueren Kontrolle der Auswahl von Kandidaten verwendet werden. Die spezifische Verwendung lautet wie folgt:

@Autowired
@Qualifier(value = “demoInfoService”)
private DemoInfoService demoInfoService;

@Resource (name = ”name”, type = ”type”): Wenn in Klammern kein Inhalt enthalten ist, lautet der Standardwert byName. Machen Sie ähnliche Dinge mit @Autowired.

4. jpa Annotation

@Entity : @Table (name = ""): Gibt an, dass dies eine Entitätsklasse ist. In jpa werden diese beiden Anmerkungen im Allgemeinen zusammen verwendet. Wenn jedoch der Tabellenname und der Name der Entitätsklasse identisch sind, kann @Table weggelassen werden

@MappedSuperClass : Wird verwendet , um die Entität zu bestimmen, die die übergeordnete Klasse ist. Die Eigenschaften der übergeordneten Klasse können von Unterklassen geerbt werden.

@NoRepositoryBean : Wird im Allgemeinen als Repository der übergeordneten Klasse verwendet. Mit dieser Anmerkung instanziiert Spring das Repository nicht.

@Column : Wenn der Feldname mit dem Spaltennamen übereinstimmt , kann er weggelassen werden.

@Id : Gibt an, dass das Attribut der Primärschlüssel ist.

@GeneratedValue (Strategie = GenerationType.SEQUENCE, Generator = "Repair_Seq"): Gibt an, dass die Strategie zur Generierung des Primärschlüssels eine Sequenz ist (sie kann Auto, IDENTITY, Native usw. sein. Auto gibt an, dass zwischen mehreren Datenbanken gewechselt werden kann.) und der Name der angegebenen Sequenz istparatur_seq.

@SequenceGeneretor (name = "Repair_Seq", SequenceName = "Seq_Repair", AllocationSize = 1): Name ist der Name der zu verwendenden Sequenz, SequenceName ist der Sequenzname der Datenbank und die beiden Namen können identisch sein.

@Transient : Gibt an, dass das Attribut keine Zuordnung zu einem Feld der Datenbanktabelle ist und das ORM-Framework dieses Attribut ignoriert.

Wenn ein Attribut keine Feldzuordnung der Datenbanktabelle ist, muss es als @Transient markiert werden. Andernfalls wird die Annotation des ORM-Frameworks standardmäßig als @Basic angegeben. @Basic (fetch = FetchType.LAZY): Das Tag kann die Lademethode von Entitätsattributen angeben

@JsonIgnore : Die Funktion besteht darin, einige Eigenschaften in der Java-Bean während der JSON-Serialisierung zu ignorieren, und sowohl die Serialisierung als auch die Deserialisierung sind betroffen.

@JoinColumn (name = ”loginId”): Eins-zu-eins: Ein Fremdschlüssel in dieser Tabelle, der auf eine andere Tabelle verweist. Eins-zu-viele: Eine andere Tabelle zeigt auf den Fremdschlüssel dieser Tabelle.

@OneToOne, @OneToMany, @ManyToOne : Entspricht Eins-zu-Eins, Eins-zu-Viele und Viele-zu-Eins in der Konfigurationsdatei für den Ruhezustand.

5.springMVC-bezogene Anmerkungen

@RequestMapping : @RequestMapping ("/ path") gibt an, dass der Controller alle URL-Anforderungen für "/ path" verarbeitet.

RequestMapping ist eine Anmerkung zur Verarbeitung der Anforderungsadressenzuordnung, die für Klassen oder Methoden verwendet werden kann.

Wird für Klassen verwendet, bedeutet dies, dass alle Methoden in der Klasse, die auf Anforderungen antworten, diese Adresse als übergeordneten Pfad verwenden. Die Anmerkung hat sechs Attribute:

params : Gibt an, dass bestimmte Parameterwerte in die Anforderung aufgenommen werden müssen, bevor die Methode verarbeitet wird.

Header : Die angegebene Anforderung muss bestimmte angegebene Headerwerte enthalten, damit die Methode die Anforderung verarbeiten kann.

value : Geben Sie die tatsächliche Adresse der Anforderung an. Die angegebene Adresse kann sich im URI-Vorlagenmodus befinden

Methode : Geben Sie den Methodentyp der Anforderung, GET, POST, PUT, DELETE usw. an.

verbraucht : Geben Sie den Inhaltstyp (Inhaltstyp) des übermittelten Inhalts an, um die Anforderung zu verarbeiten, z. B. application / json, text / html;

Erzeugt : Gibt den zurückzugebenden Inhaltstyp an und gibt nur zurück, wenn der Typ (Akzeptieren) im Anforderungsheader den angegebenen Typ enthält

@RequestParam : Wird vor Methodenparametern verwendet.
@RequestParam
String a = request.getParameter ("a").

@PathVariable : Pfadvariable . Der Parameter muss mit dem Namen in geschweiften Klammern übereinstimmen

RequestMapping(“user/get/mac/{macAddress}”)
public String getByMacAddress(@PathVariable String macAddress){
    //do something;
}

Ich denke du magst

Origin blog.csdn.net/qq_38384994/article/details/105787799
Empfohlen
Rangfolge