Heim  >  Artikel  >  Java  >  So verwenden Sie die @AliasFor-Annotation in SpringBoot

So verwenden Sie die @AliasFor-Annotation in SpringBoot

王林
王林nach vorne
2023-05-18 21:46:041670Durchsuche

Verwendung 1: Die Attribute der Annotation sind Aliase füreinander

Einführung

Es kann mit zwei Attributen der benutzerdefinierten Annotation versehen werden, was darauf hinweist, dass die beiden Attribute sind Aliase füreinander, das heißt, diese beiden Attribute haben tatsächlich die gleiche Bedeutung.

  • Einer der Attributnamen muss „Wert“ sein

  • Egal welcher Attributname angegeben ist Set, legen Sie den Attributwert fest. Ein anderer Attributname ist ebenfalls derselbe Attributwert, oder der Standardattributname kann verwendet werden.

  • Wenn beide Attributwerte angeben, müssen die erforderlichen Werte gleich sein, andernfalls wird ein Fehler gemeldet.

  • Einfach zu bedienen. Nach dieser Verwendung kann @MyAnno(location="shanghai") direkt wie folgt geschrieben werden: @MyAnno("shanghai");

Der Grund für diese Funktion : #🎜 🎜#

Wenn die benutzerdefinierte Annotation ein Attribut hat und das Attribut so benannt ist, dass es seine Bedeutung widerspiegelt, muss der Aufrufer jedes Mal, wenn er die benutzerdefinierte Annotation verwendet, das Attribut schreiben und es dann festlegen, was etwas mühsam ist . #? reee # 🎜🎜#

Test

Front-End-Zugriff: http://localhost:8080/hello/test1

Front-End-Ergebnisse (beide Wert und Standort sind der gleiche Wert Schreiben Sie den Attributnamen nicht neu. (Für geerbte Eigenschaften)

Derzeit können nur geerbte Eigenschaftswerte gelesen und geschrieben werden. #? #
package com.example.annotation;
 
import org.springframework.core.annotation.AliasFor;
 
import java.lang.annotation.*;
 
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Documented
@Inherited
public @interface MyAnnotation {
    @AliasFor(attribute = "location")
    String value() default "";
    
    @AliasFor(attribute = "value")
    String location() default "";
}
# 🎜🎜#

test

Front-End-Zugriff: http://localhost:8080/hello/test

result# 🎜 🎜#

loation(sub):location(my)

location:

location:location(my)

#🎜 🎜 #Verwendung 3: Erben Sie die Attribute der übergeordneten Annotation und schreiben Sie den Attributnamen neu Wert der übergeordneten Annotation Lesen und Schreiben. (Für überschriebene Attribute)

Egal welcher Attributname zum Festlegen des Attributwerts angegeben wird, der andere Attributname hat ebenfalls denselben Attributwert und der Standardattributname kann nicht verwendet werden.

Wenn beide Attributwerte angeben, müssen die erforderlichen Werte gleich sein, andernfalls wird ein Fehler gemeldet. #? #
package com.example.controller;
 
import com.example.annotation.MyAnnotation;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/hello")
public class HelloController {
 
    @MyAnnotation(value = "location")
    /*//下边这两种写法结果与上边是相同的
    @MyAnnotation("location")
    @MyAnnotation(location = "location")*/
    @RequestMapping("/test1")
    public String test1() {
        MyAnnotation myAnnotation = null;
        try {
            myAnnotation = AnnotationUtils.getAnnotation(this.getClass().getMethod("test1"), MyAnnotation.class);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
 
        return  "value:" + myAnnotation.value() + ";loation:" + myAnnotation.location();
    }
}
# 🎜🎜#

test

Front-End-Zugriff: http://localhost:8080/hello/test

result# 🎜 🎜#

subValue:subLocation;subLoation:subLocationvalue:;location:

value:subLocation;location:subLocation

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die @AliasFor-Annotation in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen