title: BeanPostprocessor is not invoked for beans, that are autowired as list of map
body: <p>I faced with very strange (unexpected) behaviour with <code>BeanPostProcessors</code>, let's suppose we got the following configuration:</p>
  
  <pre><code>public class Test {
  
      public static void main(String[] args) {
          new AnnotationConfigApplicationContext(TestConfiguration.class);
      }
  
      @Configuration
      public static class TestConfiguration {
  
          @Bean
          public String bean1() {
              return "1";
          }
  
          @Bean
          public String bean2() {
              return "2";
          }
  
          @Bean
          public Integer bean3() {
              return 3;
          }
  
          @Bean
          public BeanPostProcessor postProcessor() {
              return new BeanPostProcessor() {
                  @Override
                  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
                      return bean;
                  }
  
                  @Override
                  public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                      System.out.println(beanName);
                      return bean;
                  }
              };
          }
      }
  }
  </code></pre>
  
  <p>So, when we run this code, it'll print names of all beans:</p>
  
  <ul>
  <li>bean1</li>
  <li>bean2</li>
  <li>bean3</li>
  </ul>
  
  <p>Using specified post-processor. </p>
  
  <p>But when I'm using an <code>@Autowire</code> annotation, to have all beans of type <code>String</code>, beans of this type are not <code>post-processed</code> by existing post-processor, which seems very strange to me.</p>
  
  <p>Example of such configuration is the following:</p>
  
  <pre><code>public class Test {
  
      public static void main(String[] args) {
          new AnnotationConfigApplicationContext(TestConfiguration.class);
      }
  
      @Configuration
      public static class TestConfiguration {
  
          @Autowired(required = false)
          private List&lt;String&gt; stringBeans = new ArrayList&lt;&gt;();
  
          @Bean
          public String bean1() {
              return "1";
          }
  
          @Bean
          public String bean2() {
              return "2";
          }
  
          @Bean
          public Integer bean3() {
              return 3;
          }
  
          @Bean
          public BeanPostProcessor postProcessor() {
              return new BeanPostProcessor() {
                  @Override
                  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
                      return bean;
                  }
  
                  @Override
                  public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                      System.out.println(beanName);
                      return bean;
                  }
              };
          }
      }
  }
  </code></pre>
  
  <p>The version of spring core is <strong>4.3.8.RELEASE</strong></p>
  
  <p>Thx !</p>