После добавления Spring AOP в мой проект Spring Boot следующий аспект создает исключение NullPointerException для компонента службы автоматической проводки в моих контроллерах:
@Aspect
@Component
@Slf4j
public class LogRequestAspect {
@Around("@annotation(org.springframework.web.bind.annotation.RequestMapping) && execution(public * *(..))")
public Object log(final ProceedingJoinPoint joinPoint) throws Throwable {
final HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes())
.getRequest();
final Object proceed = joinPoint.proceed();
log.info(
"{} {} from {},{}",
request.getMethod(),
request.getRequestURI(),
request.getRemoteAddr(),
request.getHeader("X-Forwarded-For"));
return proceed;
}
}
Пример контроллера:
@RestController
public class AController {
@Autowired
AService aService;
@RequestMapping("/doSomething")
private List<Map<String, Object>> doSomething() {
return aService.doSomething();
}
}
Примерservice:
@Service
public class AService {
public List<Map<String, Object>> doSomething() {
List<Map<String, Object>> results = new ArrayList<>();
return results;
}
}
Пример конфигурации:
@EnableAspectJAutoProxy
@SpringBootApplication
public class Application implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) {
}
}
Как только я удаляю аспект, все работает отлично.Есть идеи, что мне здесь не хватает?