AOP (アスペクト指向プログラミング) アスペクト指向プログラミングは OOP とはまったく異なります。AOP を使用すると、プログラミング システムは OOP のオブジェクトではなくアスペクトまたは関心事に分割されます。
AOPの導入
OOPオブジェクト指向を利用する場合、コードの重複は避けられませんが、オブジェクト指向プログラミングを使用する場合、例えば、ユーザーの権限の判断において、この重複は避けられません。対応する権限 対応するメソッドを実行する; サーブレットでエンコード形式を設定するときに、同じコードが何度も表示され、書き忘れて実行時にコードが文字化けしてしまう可能性があります。このコードの重複により、コーディングが面倒になるだけでなく、保守も困難になります。 AOP はこれらのコードを整理し、特定の側面の問題を解決するコードを特定のモジュールに個別に配置し、プログラムに織り込みます。
AOPの用語
側面: 横断的な関数、
抽象クラス、またはインターフェース。AOPプログラミングで重要なことは、横断的な関数を識別することです。
(文字エンコード機能と同様の側面)
アドバイス: 横断機能の具体的な実装は、対象オブジェクトの操作前と操作後であれば、実際の状況に基づいて分析する必要があります。
アドバイス後。
(強化、文字エンコードフィルターに似ています)
ポイントカット: エントリーポイント、横断的な機能適用の制限を記述します。すべてのプロセスが必要なわけではありません、使用できる場所がエントリーポイントです
(フィルターマッチングルールに似ています / * )
Joinpoint: 接続ポイント、またはプロパティの設定やメソッドの呼び出しなど、コンポーネントがプロセスに参加するときの時間。 Spring はメソッド呼び出しの接続ポイントのみをサポートしますが、他の一部のフレームワークは次のような属性の接続ポイントをサポートします。 AspectJ 、
(フィルター REQUEST、FORWARD に似たフィルター ルール)
ウィーブ: ステッチ、コンポーネントをビジネス プロセスに適用するプロセスは、ステッチまたはウィービングと呼ばれます。
(Web へのフィルターを構成するプロセスに似ています。継承を使用してプロキシ操作を完了します)。
ターゲット、ターゲット、業務の実際のオブジェクト
例: 文字エンコード形式の設定はアスペクトとみなされ、インターセプターはアドバイス拡張と見なされます。
<!-- 字符编码过滤器--> <filter> <filter-name>characterFilter</filter-name> <filter-class>com.bjpowernode.egov.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <url-pattern>/servlet/*</url-pattern> </filter-mapping>Filter クラス
public class CharacterEncodingFilter implements Filter { @Override public void destroy() {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChainchain) throws IOException, ServletException { request.setCharacterEncoding("GB18030"); chain.doFilter(request,response); } @Override publicvoid init(FilterConfig filterConfig) throws ServletException {} }これにより、各サーブレットでエンコーディングを設定する必要がなくなります。 。
2. Spring 構成ファイルに名前空間と制約ファイルを追加します
タグを追加するだけで、次のことが可能になります。引いて。
3. プロキシクラスと拡張クラスを記述します
4. テスト
が成功した場合、ターゲットクラスのtargetmethod()が実行されると、最初に拡張クラスの beforemethod() メソッドが実行され、次にターゲット メソッドが実行され、最後に aftermethod() メソッドが実行されます。
つまり、targetmethod メソッドを手動で呼び出すだけで済みます。拡張クラスの 2 つのメソッド フレームワークは、実行中に構成ファイルを読み取り、対応する情報を取得し、拡張メソッドを自動的に追加します。 。このテストは必ず成功します。信じられない場合は、自分で試してみてください。
Spring フレームワークで AOP を使用する利点
Aop は Spring の IOC コンテナ、拡張機能、およびエントリ ポイントと統合されており、同じファイル内で設定できる Javabean です
Spring の他の部分と同様に、異なるアプリケーション間で移植できますサーバーは自由に
Spring は Aop のインターセプト インターフェイスを実装するため、ユーザーは特定のインターセプター インターフェイスにバインドする必要がなくなります。
Aop のアスペクト指向プログラミングのアイデアは、オブジェクト指向の考え方を打ち破るということだけではありません。 AOP の使用だけでなく、この種の考え方も必要です。
上記は Spring Framework 学習 (6) AOP の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。