English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SpringBoot AOPのAfter Adviceを使用して実現します。これはメソッドの実行後に提案を実行するための提案タイプです。以下を使用します @After アノテーションで後処理提案を実現します。
例を通じて後処理提案を理解しましょう。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、1手順 Spring Initializrを開く http://start.spring.io
ファイルをJavaアプリケーションとして実行するためにファイルを開き、2手順 提供 Group 名前。グループ名を提供しました com.w3codebox。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、3手順 提供しました Artifacts Id。Artifacts Idを提供します aop-after-advice-example。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、4手順 追加 Spring Web 依存関係。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、5手順 クリック 生成ボタン。"生成"ボタンをクリックすると、すべての規範をパッケージします。 jar ファイル内で、それをローカルシステムにダウンロードしてください。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、6ファイルを抽出して、ローカルシステムにダウンロードしてください。ダウンロードしたjarファイル。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、7以下の手順でインポートします。フォルダー:
ファイル-インポート-既存のMavenプロジェクト-次へ-フォルダーをブラウズ aop-after-advice-example -完了。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、8手順 開ける pom.xml ファイルを追加してください。 AOP 依存関係です。AOPを使用して Spring AOP および AspectJ Spring Bootのデモプロジェクトに向けた入門を行います。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> </dependencies>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.w3codebox</groupId> <artifactId> aop-after-advice-example</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>aop-after-advice-example</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
ファイルをJavaアプリケーションとして実行するためにファイルを開き、9手順 開ける AopAfterAdviceExampleApplication.java ファイルにアノテーションを追加 @EnableAspectJAutoProxy。
@EnableAspectJAutoProxy(proxyTargetClass=true)
AspectJをサポートしています @Aspect アノテーションを使用するコンポーネント。@Configurationアノテーションと一緒に使用できます。以下を使用できます proxyTargetClass プロパティを使用して代理のタイプを制御。デフォルト値は false 。
AopAfterAdviceExampleApplication.java
package com.w3codebox; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy(proxyTargetClass=true) public class AopAfterAdviceExampleApplication { public static void main(String[] args) { SpringApplication.run(AopAfterAdviceExampleApplication.class, args); } }
ファイルをJavaアプリケーションとして実行するためにファイルを開き、10手順 名前空間 com.w3codebox.modelのパッケージ。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、11手順 パッケージ com.w3codebox.modelの下にクラスを作成。 名前空間 Employeeクラス。 このクラスでは以下を定義します:
三つのString型の変数を定義 empId、firstName、および secondName 。 生成ゲッターとセッター。 作成default
Employee.java
package com.w3codebox.model; public class Employee { private String empId; private String firstName; private String secondName; //デフォルトのコンストラクタ public Employee() { } public String getEmpId() { return empId; } public void setEmpId(String empId) { this.empId = empId; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getSecondName() { return secondName; } public void setSecondName(String secondName) { this.secondName = secondName; } }
ファイルをJavaアプリケーションとして実行するためにファイルを開き、12手順 名前が com.w3codebox.controllerのパッケージ。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、13手順 パッケージ com.w3codebox.controllerの下にコントローラークラスを作成します。 名前空間 EmployeeControllerのクラス。
コントローラークラスでは、従業員を追加するためのおよび従業員を削除するための2つのマッピングを定義しています。
EmployeeController.java
package com.w3codebox.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.w3codebox.model.Employee; import com.w3codebox.service.EmployeeService; @RestController public class EmployeeController { @Autowired private EmployeeService employeeService; @RequestMapping(value = "/上のURLでは、/employee, method = RequestMethod.GET) public com.w3codebox.model.Employee addEmployee(@RequestParam("empId") String empId, @RequestParam("firstName") String firstName, @RequestParam("secondName") String secondName) { return employeeService.createEmployee(empId, firstName, secondName); } @RequestMapping(value = "/削除/employee, method = RequestMethod.GET) public String removeEmployee(@RequestParam("empId") String empId) { employeeService.deleteEmployee(empId); return "Employee removed"; } }
ファイルをJavaアプリケーションとして実行するためにファイルを開き、14手順 名前空間 com.w3codebox.service的包。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、15手順 パッケージ com.w3在codebox.service下创建一个Service类。 名前空間 EmployeeService的类。
在Service类中,我们定义了两个方法 createEmployee および deleteEmployee。
EmployeeService .java
package com.w3codebox.service; import org.springframework.stereotype.Service; import com.w3codebox.model.Employee; @Service public class EmployeeService { public Employee createEmployee(String empId, String fname, String sname) { Employee emp = new Employee(); emp.setEmpId(empId); emp.setFirstName(fname); emp.setSecondName(sname); return emp; } public void deleteEmployee(String empId) { } }
ファイルをJavaアプリケーションとして実行するためにファイルを開き、16手順 名前空間 com.w3codebox.aspectのパッケージ。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、17手順 パッケージ com.w3codebox.aspect下にアスペクトクラスを作成します。 名前空間 EmployeeServiceAspectのクラス。
アスペクトクラスの中で、アドバイス後のロジックを定義しました。
EmployeeServiceAspect.java
package com.w3codebox.aspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.After; import org.springframework.stereotype.Component; @Aspect @Component public class EmployeeServiceAspect { @After(value = "execution("* com.w3codebox.service.EmployeeService.*(..)) and args(empId, fname, sname)"); public void afterAdvice(JoinPoint joinPoint, String empId, String fname, String sname) { System.out.println("After method:"); + joinPoint.getSignature()); System.out.println("Creating Employee with first name - " + fname + ", second name - " + sname + " and id - " + empId); } }
上のクラスでは:
execution(expression): アドバイスを適用できるメソッドの種類です。 @After: 使って @After アノテーションされたメソッドは、切入点表現に一致するすべてのメソッドの後に実行されます。
すべてのモジュールを生成した後、プロジェクトディレクトリは以下の通りです:
すべてのモジュールを設定しました。次に、アプリケーションを実行します。
第18手順: 開ける AopAfterAdviceExampleApplication.java ファイル并将其作为Java应用程序运行。
ファイルをJavaアプリケーションとして実行するためにファイルを開き、19手順 : ブラウザを開き、以下のURLを呼び出します://localhost:8080/上のURLでは、/http:
employee?empId = {id}&firstName = {fname}&secondName = {sname} /上のURLでは、/add employee は、Controllerクラスで作成したマッピングです。2つの区切り文字を使用しました。および (?)(&)
上の出力では、以下のように値を区切りました。 emId 102、firstName = Sachin、および secondName = Bansal。
コンソールを確認してみましょう。呼び出したときに、 EmployeeService クラスの createEmployee ()メソッドの後で、 EmployeeServiceAspect クラスのメソッド afterAdvice()以下のようになります。
同様に、以下のURLを呼び出すことで、 //localhost: 8080/削除/employee?empId = 102従業員を削除するために。メッセージを返します 解雇された従業員、以下の図のように。
このセクションでは、After Adviceの動作原則を学びました。次のセクションでは、アドバイスを取り囲む方法について学びます。