например, в моем проекте у меня есть класс AdminController, который имеет множество методов с кодом, который повторяется во всех методах и имеет переменную класса, одна из переменных методов + класса:
private Map<String, OurSession> clientSessions;
public AdminController(Map<String, OurSession> clientSessions) {
this.clientSessions = clientSessions;
}
@PostMapping("addCompany/{token}")
public ResponseEntity<?> addCompany(@PathVariable String token, @RequestBody Company company){
OurSession session = clientSessions.get(token);
if(session != null){
AdminFacade admin = (AdminFacade) session.getFacade();
if(System.currentTimeMillis() - session.getLastAccessed() > 1000 * 60 * 30)
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("UNAUTHORIZED login");
session.setLastAccessed(System.currentTimeMillis());
try {
admin.addCompany(company);
return ResponseEntity.ok(company);
} catch (CompanyAlreadyExistsException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
}
}else
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("UNAUTHORIZED login");
}
теперь внутри этого метода весь этот код повторяется во всех методах этого класса:
OurSession session = clientSessions.get(token);
if(session != null){
AdminFacade admin = (AdminFacade) session.getFacade();
if(System.currentTimeMillis() - session.getLastAccessed() > 1000 * 60 * 30)
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("UNAUTHORIZED login");
session.setLastAccessed(System.currentTimeMillis());
этот код можно вставить в метод AOP другого класса, чтобы помочь мне писать меньше кода:
@Before("execution(* com.example.couponproject.controller.AdminController*(..) )")
public void runBefore(JoinPoint joinPoint) {
code here that repeat itself
}
, но моя проблема в том, что вы замечаете, что весь метод получает строковое значение, называемое токеном, и я не знаю, как использовать это в методе АОП, как мне отправлять это значение токена каждый раз, когда АОП метод работает?
другими словами, мне нужно, чтобы метод АОП использовал это значение токена из каждого метода контроллера, который вызвал метод АОП
спасибо за помощников!