Spring-Boot 2+ запускает прокси CGLIB даже при proxyTargetClass = false - PullRequest
0 голосов
/ 25 апреля 2019

Кажется, что настройки проксификации изменились между Spring-Boot 1.5+ и 2. +.

В Spring 1.5.20 с @EnableAspectJAutoProxy (proxyTargetClass = false) или просто @EnableAspectJAutoProxy или даже без аннотации @EnableAspectJAutoProxyЯ хотел бы получить JdkDynamicAopProxy.И с @EnableAspectJAutoProxy (proxyTargetClass = true) я бы получил расширенные классы CGLIB.ОК, все хорошо.

С тем же кодом, что и в Spring 2.1.4, я получаю расширенный ServiceImpl для CGLIB, независимо от конфигурации.

Мне не удалось получить прокси JdkDynamicAopProxy с Spring 2+.

Есть ли еще способ сделать это?

Вот мой код:

@SpringBootApplication
@EnableAspectJAutoProxy(proxyTargetClass = false)
public class DemoApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        MyService service = context.getBean(MyService.class);
        service.execute();
    }
}


@Aspect
@Component
public class ChronoAspect {
    @Around("execution(* com.example.demo.service..*.*(..))")
    public Object chronoAround(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();
        // .....
    }

}

public interface MyService {
    void execute();
}

@Component
public class ServiceImpl implements MyService {
    public void execute() {
        System.out.println("Hello execute from Service.execute");
    }
}
...