English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot AOP @After

SpringBoot AOPのAfter Adviceを使用して実現します。これはメソッドの実行後に提案を実行するための提案タイプです。以下を使用します @After アノテーションで後処理提案を実現します。

例を通じて後処理提案を理解しましょう。

SpringBoot @Around例

ファイルを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の動作原則を学びました。次のセクションでは、アドバイスを取り囲む方法について学びます。