我需要創建和春天有個異步過程,但是當我把@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