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:
<code><bean name="threadName" Class="ABC" scope="prototype" /> </code>
W moim kodzie próbuję czegoś takiego:
<code>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(); } } </code>
}
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?