ProxyFactoryBean использует JdkDynamicAopProxy вместо CGLIB - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь настроить ProxyFactoryBean с ThreadLocalTargetSource для SimpleDateFormat объектов. Как вы можете видеть на изображении

Immagine.png

Spring AOP не использует CGLIB для прокси SimpleDateFormat, поэтому возвращает ConversionNotSupportedException, когда пытается проверить совместимость с SimpleDateFormat.

Я не могу понять, что он делает. Я отлаживал пару часов и не могу понять. Что, вы парни, думаете? Что я делаю неправильно? Мне не хватает зависимостей?

Весна @Configuration выполняется следующим образом

@Bean("yyyyMMdd")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public DateFormat simpleDateFormatYyyyMmDd() {
    return new SimpleDateFormat("yyyyMMdd");
}

@Bean(destroyMethod = "destroy")
public ThreadLocalTargetSource threadLocalYyyyMmDd() {
    final ThreadLocalTargetSource threadLocalTargetSource = new ThreadLocalTargetSource();
    threadLocalTargetSource.setTargetBeanName("yyyyMMdd");
    return threadLocalTargetSource;
}

@Bean
@Primary
public ProxyFactoryBean proxiedThreadLocalTargetSource(final ThreadLocalTargetSource threadLocalTargetSource) {
    final ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
    proxyFactoryBean.setTargetSource(threadLocalTargetSource);
    return proxyFactoryBean;
}

1 Ответ

0 голосов
/ 03 июля 2018

Ответь за будущее сам, на всякий случай:

Прочтите этот параграф документации Spring https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop-introduction-proxies

Как писал @SotiriosDelimanolis, для принудительного использования CGLIB необходим вызов setProxyTargetClass(true) для объекта ProxyFactoryBean.

...