検索
ホームページJava&#&チュートリアルJavaカスタムアスペクト強化の方法は何ですか?

    #Java カスタム アスペクトの強化

    1. アノテーションをカスタマイズする

    @Target(value = { ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface CacheNullify {
        boolean value = true;
    }

    2. 強化されたアスペクトを実装するlogic

    @Slf4j
    @Aspect
    @Component
    public class CacheNullifyHandler {
    
        @AfterReturning("@annotation(com.xxx.CacheNullify)")
        public void afterReturning() {
            log.info("走你");
            CacheServiceUtil.delUserInfoCache();
        }
    }

    • @annotation: 以下は強化したいアノテーション (アノテーション付きメソッド) です。アノテーション名を直接記述することもできますが、名前の重複を避けるため、できるだけフルパスを記述してください

    • ##@AfterReturning

      : メソッドが実行されて正常に返された後にトリガーされます

    • @After

      : メソッドの完了後 (実行完了または例外スローを含む)

    3. ## を使用します。

    #強化する必要があるメソッドに @CacheNullify アノテーションを追加します##アスペクトとカスタム アノテーションの使用

    ##まず、アスペクトとカスタム アノテーションの基本概念と使用法を理解します。

    AOP の概要

    AOP とは、Aspect Oriented Programming の略で、アスペクト指向プログラミングを意味します。プリコンパイルと実行時の動的エージェントにより、プログラムの機能の一元的な維持を実現する技術です。 。

    AOP は、ソフトウェア開発のホットスポットである OOP の継続であり、Spring フレームワークの重要なコンテンツであり、関数型プログラミングの派生パラダイムです。

    AOP を使用すると、ビジネス ロジックのさまざまな部分を分離できるため、ビジネス ロジックのさまざまな部分間の結合が軽減され、プログラムの再利用性が向上し、開発の効率が向上します。

    AOP 定義

    Aspect (アスペクト)

    • アスペクト宣言は、次のクラスに似ています。 Java ステートメントの場合、アスペクトにはいくつかのポイントカットと対応するアドバイスが含まれます。

    ジョイント ポイント

    • は、インターセプトされたポイントを指します。春では、これらのポイントはメソッドを参照します。

    Pointcut (ポイントカット)

    • は、論理的な関係を通じて組み合わせることができる関節点のグループを表します。または、ワイルドカード、正規表現などを使用して集中して、対応するアドバイスが発生する場所を定義します。

    アドバイス (拡張/通知)

    • アドバイスは、Pointcut で定義されたプログラム ポイントが何を行うべきかを定義します。 before、after、around を使用して、各ジョイントポイントの前、後、またはその代わりに実行されるコードを区別します。

    #はじめに

    • ソースコードを変更せずに動的に追加できる特別な通知のメソッドをいくつか紹介します。

    Target (ターゲット オブジェクト)

    • Advice に組み込まれたターゲット オブジェクト。

    • #ウィービング

    • アスペクトを他のオブジェクトに接続し、アドバイスされたオブジェクトを作成するプロセス

      アノテーションの概要

      アノテーションは Java ソース コードに追加できるメタデータです。メソッド、クラス、パラメータ、パッケージはすべて、アノテーションを使用して変更できます。
    アノテーションは、メソッド、クラス、パラメータ、パッケージに使用できる特別なマークとみなすことができ、プログラムはコンパイル時または実行時にこれらのマークを検出し、特別な処理を実行できます。

    #要素と構成

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface MyAnnotation {
        String value() default"";
    }

    上記のアノテーション構成の分析

    ##public: modifier

    アクセス修飾子は public である必要があります。記述されていない場合は、デフォルトで public になります。
    • #@interface: Keyword

    キーワードは @interface;
    • MyAnnotaion: 注釈名

    注釈名はカスタムです注釈名。たとえば、上記の MyAnnotaion は注釈名です。
    • #値: 注釈タイプ要素

    注釈タイプ要素がアノテーション Content 内にある場合は、上記のアノテーションの値など、必要に応じてパラメータをマークします。
    • メタアノテーション

      ただし、注意深く分析すると、@@Target、@ で始まる 4 つのアノテーションも含まれます。 Retention、@Inherited、@Documented ) これらは 4 つの基礎となるメタアノテーションであり、他のアノテーションに注釈を付けるアノテーションです。

    • @Target: アノテーションの使用範囲を記述するために使用されます。 used

    ターゲット タイプ 説明

    ##ElementType.TYPE

    クラス、インターフェイス (アノテーション タイプを含む)、および列挙型に適用されます

    ElementType.FIELD
      プロパティに適用します (列挙型の定数を含む)
    • #ElementType.METHOD

      メソッドに適用します
    • ElementType.PARAMETER

      メソッドの仮パラメータに適用されます
    • ElementType.CONSTRUCTOR

      コンストラクターに適用されます
    • ElementType.LOCAL_VARIABLE

      ローカル変数に適用されます
    • #ElementType.ANNOTATION_TYPE

      適用されます注釈タイプへの
    • ElementType.PACKAGE

      パッケージへの適用

    注: たとえば、@Target(ElementType.METHOD) では、フラグのアノテーションがメソッドで使用されますが、このアノテーション フラグをクラスで使用すると、エラーが報告されます

    @Retention: アノテーションのライフ サイクルを示します。

    #ライフ サイクル タイプ 説明

    • RetentionPolicy.SOURCE コンパイル中に破棄され、クラス ファイルには含まれません

    • RetentionPolicy.CLASS は、JVM がロードされてクラス ファイルに組み込まれるときに破棄されます。デフォルト値

    • #RetentionPolicy.RUNTIME JVM によってロードされ、クラス ファイルに含まれ、実行時に取得できます

    • #@Inherited: マーク アノテーションです。 @Inherited はエラボレートします。 アノテーション付きの型は継承されます。 @Inherited で変更されたアノテーション型がクラスに使用されている場合、このアノテーションはクラスのサブクラスに使用されます。

    @Documented: このアノテーションでマークされた要素が Javadoc または同様のツールで文書化できることを示します

    以上がJavaカスタムアスペクト強化の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    JVMはオペレーティングシステムAPIの違いをどのように処理しますか?JVMはオペレーティングシステムAPIの違いをどのように処理しますか?Apr 27, 2025 am 12:18 AM

    JVMは、JavanativeInterface(JNI)およびJava Standard Libraryを介してオペレーティングシステムのAPIの違いを処理します。1。JNIでは、Javaコードがローカルコードを呼び出し、オペレーティングシステムAPIと直接対話できます。 2. Java Standard Libraryは統一されたAPIを提供します。これは、異なるオペレーティングシステムAPIに内部的にマッピングされ、コードがプラットフォーム間で実行されるようにします。

    Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Apr 27, 2025 am 12:15 AM

    modularitydoesnotdirectlyectlyectjava'splatformindepensence.java'splatformendepenceismaindainededainededainededaindainedaindained bythejvm、butmodularityinfluencesApplucationStructure andmanagement、間接的なインパクチャプラット形成依存性.1)

    ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?Apr 27, 2025 am 12:06 AM

    bytecodeinjavaisthe intermediaterepresentationthateNablesplatformindepence.1)javacodeis compiledintobytecodestoredin.classfiles.2)thejvminterpretsorcompilesthisbytecodeintomachinecodeatime、

    Javaがプラットフォームに依存しない言語と見なされるのはなぜですか?Javaがプラットフォームに依存しない言語と見なされるのはなぜですか?Apr 27, 2025 am 12:03 AM

    javaachievesplatformedenceTheTheTheJavavirtualMachine(JVM)、これは、javacodeisisisisisissompiledIntobytecode.2)javaCodeisisisisissompiledevedevicetecode.2)

    グラフィカルユーザーインターフェイス(GUI)は、Javaのプラットフォーム独立性の課題をどのように提示できますか?グラフィカルユーザーインターフェイス(GUI)は、Javaのプラットフォーム独立性の課題をどのように提示できますか?Apr 27, 2025 am 12:02 AM

    Javagui開発におけるプラットフォームの独立性は課題に直面していますが、Swing、Javafx、統一外観、パフォーマンス最適化、サードパーティライブラリ、クロスプラットフォームテストを使用することで対処できます。 Javaguiの開発は、クロスプラットフォームの一貫性を提供することを目的としたAWTとSwingに依存していますが、実際の効果はオペレーティングシステムごとに異なります。ソリューションには以下が含まれます。1)SwingおよびJavafxをGUIツールキットとして使用します。 2)uimanager.setlookandfeel()を介して外観を統合します。 3)さまざまなプラットフォームに合わせてパフォーマンスを最適化します。 4)ApachepivotやSWTなどのサードパーティライブラリを使用する。 5)一貫性を確保するために、クロスプラットフォームテストを実施します。

    Java開発のどの側面がプラットフォームに依存していますか?Java開発のどの側面がプラットフォームに依存していますか?Apr 26, 2025 am 12:19 AM

    javadevelopmentisnotentirelylylypratform-IndopentDuetoseveralfactors.1)jvmvariationsaffectperformanceandbehavioracrossdifferentos.2)nativeLibrariesviajniintroducePlatform-specificissues.3)giaiasystemsdifferbeTioneplateplatifflics.4)

    さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?Apr 26, 2025 am 12:15 AM

    Javaコードは、さまざまなプラットフォームで実行するときにパフォーマンスの違いがあります。 1)JVMの実装と最適化戦略は、OracleJDKやOpenJDKなどとは異なります。 2)メモリ管理やスレッドスケジューリングなどのオペレーティングシステムの特性もパフォーマンスに影響します。 3)適切なJVMを選択し、JVMパラメーターとコード最適化を調整することにより、パフォーマンスを改善できます。

    Javaのプラットフォームの独立性の制限は何ですか?Javaのプラットフォームの独立性の制限は何ですか?Apr 26, 2025 am 12:10 AM

    java'splatformindepentedencehaslimitationsincludingporformanceoverhead、versioncompatibulisisues、changleSwithnativeLibraryIntegration、プラットフォーム固有の機能、およびjvminStallation/maintenation。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    PhpStorm Mac バージョン

    PhpStorm Mac バージョン

    最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール