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 に固有のものにしたいと考えています。