@Override public void copyConfigurationFrom(ConfigurableBeanFactory otherFactory) { super.copyConfigurationFrom(otherFactory); if (otherFactory instanceof DefaultListableBeanFactory) { DefaultListableBeanFactory otherListableFactory = (DefaultListableBeanFactory) otherFactory; this.allowBeanDefinitionOverriding = otherListableFactory.allowBeanDefinitionOverriding; this.allowEagerClassLoading = otherListableFactory.allowEagerClassLoading; this.dependencyComparator = otherListableFactory.dependencyComparator; // A clone of the AutowireCandidateResolver since it is potentially BeanFactoryAware... setAutowireCandidateResolver(BeanUtils.instantiateClass(getAutowireCandidateResolver().getClass())); // Make resolvable dependencies (e.g. ResourceLoader) available here as well... this.resolvableDependencies.putAll(otherListableFactory.resolvableDependencies); } }
@Override public void copyConfigurationFrom(ConfigurableBeanFactory otherFactory) { super.copyConfigurationFrom(otherFactory); if (otherFactory instanceof DefaultListableBeanFactory) { DefaultListableBeanFactory otherListableFactory = (DefaultListableBeanFactory) otherFactory; this.allowBeanDefinitionOverriding = otherListableFactory.allowBeanDefinitionOverriding; this.allowEagerClassLoading = otherListableFactory.allowEagerClassLoading; this.dependencyComparator = otherListableFactory.dependencyComparator; // A clone of the AutowireCandidateResolver since it is potentially BeanFactoryAware... setAutowireCandidateResolver(BeanUtils.instantiateClass(getAutowireCandidateResolver().getClass())); // Make resolvable dependencies (e.g. ResourceLoader) available here as well... this.resolvableDependencies.putAll(otherListableFactory.resolvableDependencies); } }
dlbf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver());
dlbf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
@Before public void setup() { QualifierAnnotationAutowireCandidateResolver acr = new QualifierAnnotationAutowireCandidateResolver(); acr.setBeanFactory(this.beanFactory); this.beanFactory.setAutowireCandidateResolver(acr); }
beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver());
@Test public void testGenericMatchingWithUnresolvedOrderedStream() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); bf.setAutowireCandidateResolver(new GenericTypeAwareAutowireCandidateResolver()); RootBeanDefinition bd1 = new RootBeanDefinition(NumberStoreFactory.class); bd1.setFactoryMethodName("newDoubleStore"); bf.registerBeanDefinition("store1", bd1); RootBeanDefinition bd2 = new RootBeanDefinition(NumberStoreFactory.class); bd2.setFactoryMethodName("newFloatStore"); bf.registerBeanDefinition("store2", bd2); ObjectProvider<NumberStore<?>> numberStoreProvider = bf.getBeanProvider(ResolvableType.forClass(NumberStore.class)); List<NumberStore<?>> resolved = numberStoreProvider.orderedStream().collect(Collectors.toList()); assertEquals(2, resolved.size()); assertSame(bf.getBean("store2"), resolved.get(0)); assertSame(bf.getBean("store1"), resolved.get(1)); }
@Before public void setup() { bf = new DefaultListableBeanFactory(); bf.registerResolvableDependency(BeanFactory.class, bf); bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); }
@Before public void setup() { bf = new DefaultListableBeanFactory(); bf.registerResolvableDependency(BeanFactory.class, bf); bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); }
@Test public void testCustomResolver() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); BeanDefinitionReader reader = new XmlBeanDefinitionReader(bf); reader.loadBeanDefinitions(CONTEXT); CustomAutowireConfigurer cac = new CustomAutowireConfigurer(); CustomResolver customResolver = new CustomResolver(); bf.setAutowireCandidateResolver(customResolver); cac.postProcessBeanFactory(bf); TestBean testBean = (TestBean) bf.getBean("testBean"); assertEquals("#1!", testBean.getName()); }
DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); bf.setAutowireCandidateResolver(new GenericTypeAwareAutowireCandidateResolver());
@Test public void testLazyResourceInjectionWithNonExistingTarget() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(FieldResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); FieldResourceInjectionBean bean = (FieldResourceInjectionBean) bf.getBean("annotatedBean"); assertNotNull(bean.getTestBean()); try { bean.getTestBean().getName(); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (NoSuchBeanDefinitionException ex) { // expected } }
@Test public void testLazyOptionalResourceInjectionWithNonExistingTarget() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(OptionalFieldResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); OptionalFieldResourceInjectionBean bean = (OptionalFieldResourceInjectionBean) bf.getBean("annotatedBean"); assertNotNull(bean.getTestBean()); assertNotNull(bean.getTestBeans()); assertTrue(bean.getTestBeans().isEmpty()); try { bean.getTestBean().getName(); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (NoSuchBeanDefinitionException ex) { // expected } }
@Test public void testGenericMatchingWithBeanNameDifferentiation() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setAutowireCandidateResolver(new GenericTypeAwareAutowireCandidateResolver()); bf.registerBeanDefinition("doubleStore", new RootBeanDefinition(NumberStore.class)); bf.registerBeanDefinition("floatStore", new RootBeanDefinition(NumberStore.class)); bf.registerBeanDefinition("numberBean", new RootBeanDefinition(NumberBean.class, RootBeanDefinition.AUTOWIRE_CONSTRUCTOR, false)); NumberBean nb = bf.getBean(NumberBean.class); assertSame(bf.getBean("doubleStore"), nb.getDoubleStore()); assertSame(bf.getBean("floatStore"), nb.getFloatStore()); String[] numberStoreNames = bf.getBeanNamesForType(ResolvableType.forClass(NumberStore.class)); String[] doubleStoreNames = bf.getBeanNamesForType(ResolvableType.forClassWithGenerics(NumberStore.class, Double.class)); String[] floatStoreNames = bf.getBeanNamesForType(ResolvableType.forClassWithGenerics(NumberStore.class, Float.class)); assertEquals(2, numberStoreNames.length); assertEquals("doubleStore", numberStoreNames[0]); assertEquals("floatStore", numberStoreNames[1]); assertEquals(0, doubleStoreNames.length); assertEquals(0, floatStoreNames.length); }
dlbf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
@Override protected DefaultListableBeanFactory createBeanFactory() { // Copy all postProcessors defined in the defaultMuleConfig so that they get applied to the child container DefaultListableBeanFactory beanFactory = new ObjectProviderAwareBeanFactory(getInternalParentBeanFactory()); beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); beanFactory.setInstantiationStrategy(new LaxInstantiationStrategyWrapper(new CglibSubclassingInstantiationStrategy(), optionalObjectsController)); return beanFactory; }
@Override protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) { DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; defaultListableBeanFactory.registerBeanDefinition(AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME, rootBeanDefinition(MuleAwareObjectsInjectorProcessor.class) .getBeanDefinition()); defaultListableBeanFactory.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); defaultListableBeanFactory.registerBeanDefinition(AUTOWIRED_POST_PROCESSOR_OBJECT_KEY, rootBeanDefinition(AutowiredAnnotationBeanPostProcessor.class) .getBeanDefinition()); registerArtifactPropertiesPlaceholder(defaultListableBeanFactory, configuration); }
@Override protected DefaultListableBeanFactory createBeanFactory() { //Copy all postProcessors defined in the defaultMuleConfig so that they get applied to the child container DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(getInternalParentBeanFactory()); beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); beanFactory.setInstantiationStrategy(new LaxInstantiationStrategyWrapper(new CglibSubclassingInstantiationStrategy(), optionalObjectsController)); return beanFactory; }
@Override protected DefaultListableBeanFactory createBeanFactory() { // Copy all postProcessors defined in the defaultMuleConfig so that they get applied to the child container DefaultListableBeanFactory beanFactory = new ObjectProviderAwareBeanFactory(getInternalParentBeanFactory()); beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); beanFactory.setInstantiationStrategy(new LaxInstantiationStrategyWrapper(new CglibSubclassingInstantiationStrategy(), optionalObjectsController)); return beanFactory; }