我需要创建和春天有个异步过程,但是当我把@Async
我的方法,我得到这个错误Spring @Async批注导致java.io.NotSerializableException?
java.io.NotSerializableException: org.springframework.aop.interceptor.AsyncExecutionInterceptor
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
我有这样的例子,但它不工作:
@Autowired
private IServicioClienteAsync servicioClienteAsync;
public void prueba() {
//testAsync();
servicioClienteAsync.crearCliente();
}
和
@Service(value = "servicioClienteAsync")
public class ServicioClienteAsync implements Serializable, IServicioClienteAsync {
@Autowired
private WServiceCliente wServiceCliente;
@Override
public void crearCliente() {
wServiceCliente.test("wiiii");
}
}
和
@Component
public class WServiceCliente{
@Async
public void test(String name) {
System.out.println("init ");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("finish");
}
}
好吧,但我需要这@Async你可以告诉我任何解决方案,我的控制器viewscope需要序列化和服务春天,你知道其他方式吗? – ggarridov
您将无法在视图范围的bean中使用“@ Async”注释。你能将'@ Async'方法移动到会话或应用程序范围的bean吗?如果不是,则可以选择删除'@ Async'并只启动一个包含异步代码的新线程;这是通过返回'void'的方法简化的。 –
好的,谢谢我会试试 – ggarridov