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/test1Front-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/testresult# 🎜 🎜#
loation(sub):location(my)location:
location:location(my)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. #? ##🎜 🎜 #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)
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(); } }
subValue:subLocation;subLoation:subLocationvalue:;location:
value:subLocation;location:subLocationDas 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!