title: Cleaner way to get new instance of an autowired field that is prototype in nature
body: <p>I faced this issue, while trying to autowire a runnable class and creating different instances of it in different call and keeping it in an array.</p>
  
  <p>xml configuration is :</p>
  
  <pre><code>&lt;bean name="threadName" Class="ABC" scope="prototype" /&gt;
  </code></pre>
  
  <p>In my code, I am trying something like this:</p>
  
  <pre><code>public class ThreadHandler{
  
  
  @Autowired
  private ABC threadName;
  
  //getter
  ABC getThreadName(){
       return threadName;
  }
  
  public void someFunction(){
       List&lt;ABC&gt; abc = new ArrayList(ABC&gt;();
       for (int i=0;i&lt;SOME_CONST;i++){
            ABC tName = getThreadName();
            abc.add(tName);
            tName.start();
        }
  }   
  </code></pre>
  
  <p>}</p>
  
  <p>Let <code>ABC</code> be a class which is <code>Thread/Runnable/Callable</code>.</p>
  
  <p>In this way, it throws <code>java.lang.IllegalThreadStateException</code>.
  But, it works fine, if I use <code>ABC tName =appContext.getBean("threadName",ABC.class);</code></p>
  
  <p>Why does it happen?</p>
  
  <p>Don't we get a new instance while trying to get an object from getMethod?</p>