Was ist die Methode zur benutzerdefinierten Java-Aspektverbesserung?
„Benutzerdefinierte Java-Aspektverbesserung“ Annotation (annotierte Methode), Sie können den Annotationsnamen direkt schreiben, aber um doppelte Namen zu vermeiden, schreiben Sie so viel wie möglich den vollständigen Pfad
@AfterReturning
: Die Methode ist ausgeführt und erfolgreich. Wird bei der Rückkehr ausgelöst@After
: Wird ausgelöst, nachdem die Methode abgeschlossen ist (einschließlich Ausführungsabschluss oder ausgelöster Ausnahme)3
Bei Bedarf fügen Sie der erweiterten Methode die @CacheNullify-Annotation hinzu
Verwendung von Aspekten und benutzerdefinierten Annotationen- Verstehen Sie zunächst die grundlegenden Konzepte und die Verwendung von Aspekten und benutzerdefinierten Annotationen
Einführung in AOP
@annotation
: 后面跟的是你要增强的注解(所注释的方法), 可以直接写注解名, 但是为了防止重名尽可能写全路径吧 @AfterReturning
: 方法执行完并成功返回则触发@After
: 方法完毕后触发(包括执行完毕, 或者抛出异常)
3. 使用
在需要增强的方法上加上@CacheNullify注解
切面、自定义注解的使用
先了解切面和自定义注解的基本概念和使用
AOP简介
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP定义
Aspect(切面)
Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point(连接点)
指那些被拦截的点,在spring中这些点指的是方法。
Pointcut(切入点)
表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强/通知)
Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Introduction(引介)
一种特殊的通知,可以在不修改源码的情况下动态添加一些方法。
Target(目标对象)
织入 Advice 的目标对象.。
Weaving(织入)
将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
注解简介
注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。
注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。
元素和组成
@Target(value = { ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface CacheNullify { boolean value = true; }
分析上面的注解组成
public:修饰符
访问修饰符必须为public,不写默认为pubic;
@interface:关键字
关键字为@interface;
MyAnnotaion:注解名称
注解名称为自定义注解的名称,例如上面的MyAnnotaion就是注解名称
value:注解类型元素
注解类型元素是注解中内容,根据需要标志参数,例如上面的注解的value;
元注解
但仔细分析还包含@开头的四个注解@Target、@Retention、@Inherited、@Documented)这是四个是底层的元注解,注解其他注解的注解
@Target:用于描述注解的使用范围,该注解可以使用在什么地方
Target类型 描述
ElementType.TYPE
应用于类、接口(包括注解类型)、枚举ElementType.FIELD
应用于属性(包括枚举中的常量)ElementType.METHOD
应用于方法ElementType.PARAMETER
应用于方法的形参ElementType.CONSTRUCTOR
应用于构造函数ElementType.LOCAL_VARIABLE
应用于局部变量ElementType.ANNOTATION_TYPE
应用于注解类型
🎜AOP ist die Fortsetzung von OOP, einem Hotspot in der Softwareentwicklung, einem wichtigen Inhalt im Spring-Framework und einem abgeleiteten Paradigma der funktionalen Programmierung. 🎜🎜AOP kann verwendet werden, um verschiedene Teile der Geschäftslogik zu isolieren, wodurch die Kopplung zwischen den verschiedenen Teilen der Geschäftslogik verringert, die Wiederverwendbarkeit des Programms verbessert und die Effizienz der Entwicklung verbessert wird. 🎜ElementType.PACKAGE
AOP ist die Abkürzung für Aspect Oriented Programming, was bedeutet: aspektorientierte Programmierung, eine Technologie, die eine einheitliche Aufrechterhaltung der Programmfunktionen durch Vorkompilierung und dynamische Agenten während der Laufzeit erreicht.AOP-Definition
🎜🎜🎜🎜Aspect (Aspect)🎜🎜 🎜🎜Aspect-Deklaration ähnelt der Klassendeklaration in Java, und Aspect enthält einige Pointcuts und entsprechende Ratschläge. 🎜🎜🎜🎜🎜Gelenkpunkt (Verbindungspunkt)🎜🎜🎜🎜 bezieht sich auf die abgefangenen Punkte. Im Frühjahr beziehen sich diese Punkte auf Methoden. 🎜🎜🎜🎜🎜Pointcut (Pointcut) 🎜🎜🎜🎜 stellt eine Reihe von Verbindungspunkten dar, die entweder durch logische Beziehungen kombiniert oder durch Platzhalter, reguläre Ausdrücke usw. konzentriert werden. Es definiert, wo der entsprechende Hinweis angezeigt wird geschehen. Hinweis (Verbesserung/Benachrichtigung) nach oder anstelle der Ausführung von Code. 🎜🎜🎜🎜🎜Einführung (Einführung) 🎜🎜🎜🎜Eine spezielle Benachrichtigung, mit der einige Methoden dynamisch hinzugefügt werden können, ohne den Quellcode zu ändern. 🎜🎜🎜🎜🎜Ziel (Zielobjekt)🎜🎜🎜🎜In das Zielobjekt der Beratung einbinden. 🎜🎜🎜🎜🎜Weben (Weben)🎜🎜🎜🎜Der Prozess, Aspect mit anderen Objekten zu verbinden und ein empfohlenes Objekt zu erstellen🎜RetentionPolicy.SOURCE
Wird beim Kompilieren verworfen und ist nicht in der Klassendatei enthaltenRetentionPolicy.SOURCE
编译时被丢弃,不包含在类文件中RetentionPolicy.CLASS
JVM加载时被丢弃,包含在类文件中,默认值RetentionPolicy.RUNTIME
Annotation-Einführung
🎜Annotation ist eine Methode, die hinzugefügt werden kann Die Metadaten im Java-Quellcode, in Methoden, Klassen, Parametern und Paketen können mit Anmerkungen geändert werden. 🎜🎜Annotationen können als spezielle Tags betrachtet werden, die für Methoden, Klassen, Parameter und Pakete verwendet werden können. Das Programm kann diese Tags erkennen und beim Kompilieren oder Ausführen eine spezielle Verarbeitung durchführen. 🎜Elemente und Zusammensetzung
@Slf4j @Aspect @Component public class CacheNullifyHandler { @AfterReturning("@annotation(com.xxx.CacheNullify)") public void afterReturning() { log.info("走你"); CacheServiceUtil.delUserInfoCache(); } }
Meta-Annotation🎜Aber eine sorgfältige Analyse umfasst auch die vier Annotationen, die mit @@Target, @Retention, @Inherited, @Documented beginnen. Dies sind die vier zugrunde liegenden Meta-Annotationen, Annotationen zum Annotieren anderer Anmerkungen🎜🎜🎜@Ziel: verwendet Beschreiben Sie den Anwendungsbereich der Anmerkung, wo die Anmerkung verwendet werden kann🎜🎜🎜Zieltyp Beschreibung🎜🎜🎜🎜ElementType.TYPE
Gilt für Klassen, Schnittstellen (einschließlich Annotationstypen), Aufzählungen🎜🎜🎜ElementType.FIELD
Gilt für Eigenschaften (einschließlich Konstanten in Aufzählungen)🎜🎜🎜ElementType.METHOD
Gilt für Methoden🎜🎜 🎜ElementType.PARAMETER
Auf Methodenparameter angewendet🎜🎜🎜ElementType.CONSTRUCTOR
Auf Konstruktor angewendet 🎜🎜🎜ElementType. LOCAL_VARIABLE Gilt für lokale Variablen🎜🎜🎜ElementType.ANNOTATION_TYPE
Gilt für Annotationstypen🎜🎜🎜ElementType.PACKAGE
Gilt für Pakete 🎜
Hinweis: Zum Beispiel @Target(ElementType.METHOD), die Annotation des Flags wird für die Methode verwendet, aber wenn wir diese Annotation für die Klasse markieren, wird ein Fehler gemeldet
@Retention: Zeigt an Lebenszyklus der Annotation
Lebenszyklustyp Beschreibung
RetentionPolicy.CLASS code> Wird beim Laden der JVM verworfen und in die Klassendatei aufgenommen. Der Standardwert <p></p>
<p></p>
<code>RetentionPolicy.RUNTIME
wird von der JVM geladen, in die Klassendatei aufgenommen und kann abgerufen werden zur Laufzeit 🎜🎜🎜🎜@Inherited: ist eine Markierungsanmerkung, @Inherited veranschaulicht, dass ein annotierter Typ vererbt wird. Wenn für eine Klasse ein mit @Inherited geänderter Annotationstyp verwendet wird, wird diese Annotation für Unterklassen der Klasse verwendet. 🎜🎜 @Documented: Zeigt an, dass das durch diese Annotation markierte Element von Javadoc oder ähnlichen Tools dokumentiert werden kann🎜Das obige ist der detaillierte Inhalt vonWas ist die Methode zur benutzerdefinierten Java-Aspektverbesserung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.
