У меня есть класс контроллера, который дополнительно вызывает метод класса обслуживания. AOP @Around
аспект применяется к методу класса обслуживания.
package com.hetal.example;
@RestController
public class CustomerController {
@Autowired
CustomerService customerService;
@RequestMapping(value = "/getDetails", method = RequestMethod.GET)
public String getCustomerDetails() {
System.out.println("Inside controller class");
String details = customerService.getDetails(custName);
System.out.println("Customer details is = " + details); // prints null
}
}
package com.hetal.example;
@Service
public class CustomerServiceImpl implements CustomerService {
@Override
public String getDetails(String custName) {
//some code
returns "Customer details";
}
}
Аспект написан для выполнения @Around
метод getDetails()
из CustomerServiceImpl
package com.hetal.config;
public class JoinPointConfig {
@Pointcut(value="execution(* com.hetal.example.CustomerService.getDetails(..) && args(custName)"))
public void handleCustomerDetails(String custName) {}
}
package com.hetal.config;
@Aspect
@Component
public class CustomerAspect {
@Around("com.hetal.config.JoinPointConfig.handleCustomerDetails(custName)")
public Object aroundCustomerAdvice(ProceedingJoinPoint joinpoint, String custName) {
System.out.println("Start aspect");
Object result= null;
try {
result = joinpoint.proceed();
System.out.println("End aspect");
}
catch(Exception e) {}
return result;
}
}
Выполнение идет так, как показано ниже,
Контроллер вызывает метод CustomerServiceImpl.getDetails
.
CustomerAspect
вызывается, выводит «Начать аспект». // перед советом
joinpoint.proceed()
вызывает фактический CustomerServiceImpl.getDetails
метод.
CustomerServiceImpl.getDetails
возвращает строку «Данные клиента» и элемент управления возвращается к аспекту, печатает «Конец аспекта» // после возврата совета
Управление возвращается к классу контроллера, но полученный ответ равен нулю.
Я хочу получить ответ, возвращенный из класса обслуживания в класс контроллера после завершения аспекта.
Заранее спасибо !!