2

AOPで@Beforeをしようとしています。インターフェイスを実装したdtoがあり、コントローラーメソッドではdtoがパラメーターの1つであり、インターフェイスを実装しているため、ポイントカットで実装されたインターフェイスでパラメーターを識別したい.私は次のことを試しました

従業員.java

package com.example.demo;

public class Employee implements UserData {

private String name;
private String id;
private String clazz;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getClazz() {
    return clazz;
}

public void setClazz(String clazz) {
    this.clazz = clazz;
}

@Override
public String getData() {
    String data=name+"_"+id;
    return data;
}

}

コントローラ

@RestController
public class HelloController {

@RequestMapping("/")
public String getEmployees(Employee emp) {
    return "emp";
}

インターフェース

public interface Tenant {

String getData();
}

側面

@Before("pointcut(tenant)")
public void before(Tenant tenant){


}   
@Pointcut("execution(* com.example.demo.*.*(UserData))"+" && 
 args(UserData))")
public void pointcut(UserData UserData) {
    System.out.println("In aspect********************"+UserData.getData());
}
}

上記の側面では、UserData は Employee のインスタンスとして識別されません。それを達成する方法は? ポイント カットに (..) を入れることはできますが、UserData に固有のものにしたいと考えています。

4

2 に答える 2