Sauberer Weg, um neue Instanz eines autowired Feld, das Vorbild in der Natur

Stand ich vor diesem Problem, während Sie versuchen autowire eine runnable-Klasse und der Erstellung von verschiedenen Instanzen in verschiedenen call und halten Sie Sie in einem array.

xml-Konfiguration ist :

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

In meinem code, ich versuche so etwas wie dieses:

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

}

Lassen ABC eine Klasse sein, die Thread/Runnable/Callable.

In dieser Weise, es wirft java.lang.IllegalThreadStateException.
Aber, es funktioniert gut, wenn ich ABC tName =appContext.getBean("threadName",ABC.class);

Warum ist es passiert?

Nicht bekommen wir eine neue Instanz, während versucht, ein Objekt von getMethod?

Sie brauchen keine getter. verwenden Sie einfach diese.threadName.someFinction();
meinst du, diese.threadName wird immer eine neue Instanz? genau so, wie appContext.getBean("name",Klasse)?

InformationsquelleAutor instanceOfObject | 2012-04-27

Schreibe einen Kommentar