package ru.digitalbanana.demoresourceserver.config; import org.slf4j.*; import org.springframework.beans.factory.InjectionPoint; import org.springframework.context.annotation.*; import org.springframework.core.MethodParameter; import static java.util.Optional.*; import java.lang.reflect.Field; @Configuration public class LoggingConfiguration { @Bean @Scope("prototype") public Logger logger(final InjectionPoint ip) { return LoggerFactory.getLogger(of(ip.getMethodParameter()) .map(MethodParameter::getContainingClass) .orElseGet( () -> ofNullable(ip.getField()) .map(Field::getDeclaringClass) .orElseThrow(IllegalArgumentException::new) ) ); } }