Le moyen le plus propre pour obtenir une nouvelle instance d'un autocâblés champ qui est le prototype dans la nature

J'ai fait face à ce problème, tout en essayant de autowire une classe runnable et la création de différentes instances dans les différents appels et de les garder dans un tableau.

xml de configuration est :

<bean name="threadName" Class="ABC" scope="prototype" />

Dans mon code, je suis en train d'essayer quelque chose comme ceci:

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();
      }
}   

}

Laisser ABC être une classe qui est Thread/Runnable/Callable.

De cette façon, il jette java.lang.IllegalThreadStateException.
Mais, il fonctionne très bien, si j'utilise ABC tName =appContext.getBean("threadName",ABC.class);

Pourquoi se produit-il?

Nous n'obtenons pas une nouvelle instance, tout en essayant d'obtenir un objet de getMethod?

  • Vous n'avez pas besoin de lecture. il suffit d'utiliser cette.threadName.someFinction();
  • tu veux dire, c'.threadName donnera toujours une nouvelle instance? exactement de la même façon appContext.getBean("nom",de classe) n'?