Кажется, у меня возникла проблема.@Async через прокси-классы создает исключение весной 3.2
У меня есть класс
@Component
@Scope("prototype")
public class MyClass extends BaseClass {
....
...
@Async
public void doSomething() {
....
}
....
}
и пружины Config, которая содержит
<context:annotation-config />
<context:component-scan base-package="com.company.project" />
<task:annotation-driven executor="taskExecutor"/>
<task:executor id="taskExecutor" pool-size="10" queue-capacity="10" />
и в некоторой части кода у меня есть
BaseClass bean = springBeans.getBean(MyClass.class);
, но я получаю это исключение
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'myClass' must be of type [com.company.project.MyClass], but was actually of type [$Proxy19]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:361)
Я могу понять его класс прокси, но не знаю, почему Spring не позволяет преобразовать прокси.
У меня есть cglib 2.2 no dep на пути к классу вместе с Spring 3.2 core libs.
Может ли кто-нибудь указать на какие-либо подсказки относительно фиксации этого?
Короче говоря, я хочу, чтобы метод был Async при вызове.
Вы можете получить его из ApplicationContext через '#getBean (BaseClass.class)' или '#getBean ("MyClass")' ? Как насчет '@ Autowired' на' MyClass' где-нибудь? –
Я скопировал ваш код, и он отлично работает. Я использовал «ClassPathXmlApplicationContext» для контекста. –
Кроме того, присваивая переменной типа «BaseClass», вам придется отдать ее для вызова метода @ @ Async. –