title: Constructor injection using Spring annotation @Autowired does not work
body: <p>I have created 2 simple classes. Constructor of one class is annotated as @Autowired. It accepts the object of another class. But this code fails.</p>
  
  <p>Classes :-
  1) SimpleBean.java</p>
  
  <pre><code>@Configuration
  public class SimpleBean {
    InnerBean prop1;
  
    public InnerBean getProp1() {
      return prop1;
    }
  
    public void setProp1( InnerBean prop1) {
      System.out.println("inside setProp1 input inner's property is "
          + prop1.getSimpleProp1());
      this.prop1 = prop1;
    }
  
    @Autowired(required=true)
    public SimpleBean(InnerBean prop1) {
      super();
      System.out.println("inside SimpleBean constructor inner's property is "
          + prop1.getSimpleProp1());
      this.prop1 = prop1;
    }
  }
  </code></pre>
  
  <p>2) Inner.java</p>
  
  <pre><code>@Configuration
  public class InnerBean {
    String simpleProp1;
  
    public String getSimpleProp1() {
      return simpleProp1;
    }
  
    public void setSimpleProp1(String simpleProp1) {
      this.simpleProp1 = simpleProp1;
    }
  
  }
  </code></pre>
  
  <p>When I try to load ApplicationConext</p>
  
  <pre><code>ApplicationContext acnxt = new AnnotationConfigApplicationContext("com.domain");
  </code></pre>
  
  <p>It gives following error :-</p>
  
  <pre><code>Exception in thread "main" org.springframework.beans.factory.BeanCreationException:         Error creating bean with name 'simpleBean' defined in file [C:\Users\owner\Documents\Java Project\MyWorkSpace\springMVCSecond\WebContent\WEB-INF\classes\com\domain\SimpleBean.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.domain.SimpleBean$$EnhancerByCGLIB$$4bc418be]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.domain.SimpleBean$$EnhancerByCGLIB$$4bc418be.&lt;init&gt;()
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
  at org.springframework.context.annotation.AnnotationConfigApplicationContext.&lt;init&gt;(AnnotationConfigApplicationContext.java:75)
  at com.test.SpringAnnotationTest.main(SpringAnnotationTest.java:12)
  Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.domain.SimpleBean$$EnhancerByCGLIB$$4bc418be]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.domain.SimpleBean$$EnhancerByCGLIB$$4bc418be.&lt;init&gt;()
  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:70)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)
  ... 12 more
  Caused by: java.lang.NoSuchMethodException: com.domain.SimpleBean$$EnhancerByCGLIB$$4bc418be.&lt;init&gt;()
  at java.lang.Class.getConstructor0(Unknown Source)
  at java.lang.Class.getDeclaredConstructor(Unknown Source)
  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:65)
  ... 13 more
  </code></pre>
  
  <p>If I introduce no-arg constructor in SimpleBean class. It does not give error. 
  But this does not give me pre-poulated object of SimpleBean ( as in XML configuration using &lt; constructor-arg > ).
  So when using annotation, is it mandatory to have no-arg constructor ?
  What is the appropriate way out ?</p>