title: How to get Spring to autowire integration test class using multiple contexts?
body: <p>One of my integration tests uses multiple Spring context files. It seems that Spring only autowires in beans from the first context and not the second. Does anyone know what I am doing wrong or how to work around the problem?</p>
  
  <pre>
  @RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration(locations = {
          "classpath:/META-INF/spring/applicationContext.xml",
          "classpath:/META-INF/spring/applicationContext-security.xml"})
  @Configurable
  public class UserDetailsServiceImplIntegrationTest {
  
      @Autowired
      UserDataOnDemand dod;
      // @Autowired does not work for this bean from applicationContext-security.xml
      UserDetailsService userDetailsService;
  
      @Before
      public void setup() {
          dod.init();
          // workaround for autowiring problem
          userDetailsService = (UserDetailsService)ctx.getBean("userDetailsService");
      }
  
      @Test
      public void testLoadUser() {
          UserDetails ud = userDetailsService.loadUserByUsername("david@somewhere.co.za");
          Assert.assertEquals("david@somewhere.co.za", ud.getUsername());
      }
  }
  </pre>
  
  <p>I am using Spring 3.0.3.</p>
  
  <p>Here is the stack trace when I uncomment the @Autowired line for UserDetailsService:</p>
  
  <pre>
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'za.co.acme.app.security.UserDetailsServiceImplIntegrationTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.security.core.userdetails.UserDetailsService za.co.acme.app.security.UserDetailsServiceImplIntegrationTest.userDetailsService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.security.core.userdetails.UserDetailsService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
      at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
      at org.springframework.beans.factory.wiring.BeanConfigurerSupport.configureBean(BeanConfigurerSupport.java:140)
      at org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect.configureBean(AnnotationBeanConfigurerAspect.aj:59)
      at org.springframework.beans.factory.aspectj.AbstractDependencyInjectionAspect.ajc$afterReturning$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$2$1ea6722c(AbstractDependencyInjectionAspect.aj:89)
      at za.co.acme.app.security.UserDetailsServiceImplIntegrationTest.(UserDetailsServiceImplIntegrationTest.java:25)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:202)
  </pre>
  
  <p>The bean is definitely there since the "by name" lookup works, and it is of the correct type.</p>