Czystszy sposób na uzyskanie nowego przykładu pola automatycznego, które jest prototypem w przyrodzie
Napotkałem ten problem, próbując automatycznie uruchomić klasę runnable i utworzyć jej różne instancje w różnych wywołaniach i przechowywać je w tablicy.
Konfiguracja XML:
<bean name="threadName" Class="ABC" scope="prototype" />
W moim kodzie próbuję czegoś takiego:
public class ThreadHandler{
@Autowired
private ABC threadName;
//getter
ABC getThreadName(){
return threadName;
}
public void someFunction(){
List<ABC> abc = new ArrayList(ABC>();
for (int i=0;i<SOME_CONST;i++){
ABC tName = getThreadName();
abc.add(tName);
tName.start();
}
}
}
PozwolićABC
bądź klasą, która jestThread/Runnable/Callable
.
W ten sposób rzucajava.lang.IllegalThreadStateException
. Ale działa dobrze, jeśli używamABC tName =appContext.getBean("threadName",ABC.class);
Dlaczego tak się dzieje?
Czy nie dostajemy nowej instancji podczas próby pobrania obiektu z getMethod?