List of usage examples for org.springframework.beans.factory.support RootBeanDefinition setAutowireCandidate
@Override public void setAutowireCandidate(boolean autowireCandidate)
From source file:org.jdal.aop.SerializableProxyUtils.java
public static BeanDefinitionHolder createSerializableProxy(BeanDefinitionHolder definition, BeanDefinitionRegistry registry, boolean proxyTargetClass) { String originalBeanName = definition.getBeanName(); BeanDefinition targetDefinition = definition.getBeanDefinition(); // Create a scoped proxy definition for the original bean name, // "hiding" the target bean in an internal target definition. RootBeanDefinition proxyDefinition = new RootBeanDefinition(SerializableProxyFactoryBean.class); proxyDefinition.setOriginatingBeanDefinition(definition.getBeanDefinition()); proxyDefinition.setSource(definition.getSource()); proxyDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); String targetBeanName = getTargetBeanName(originalBeanName); proxyDefinition.getPropertyValues().add("targetBeanName", targetBeanName); if (proxyTargetClass) { targetDefinition.setAttribute(AutoProxyUtils.PRESERVE_TARGET_CLASS_ATTRIBUTE, Boolean.TRUE); } else {//from w ww .j a va 2s . co m proxyDefinition.getPropertyValues().add("proxyTargetClass", Boolean.FALSE); } // Copy autowire settings from original bean definition. proxyDefinition.setAutowireCandidate(targetDefinition.isAutowireCandidate()); proxyDefinition.setPrimary(targetDefinition.isPrimary()); if (targetDefinition instanceof AbstractBeanDefinition) { proxyDefinition.copyQualifiersFrom((AbstractBeanDefinition) targetDefinition); } // Set singleton property of FactoryBean proxyDefinition.getPropertyValues().add("singleton", !targetDefinition.isPrototype()); // The target bean should be ignored in favor of the scoped proxy. targetDefinition.setAutowireCandidate(false); targetDefinition.setPrimary(false); // Register the target bean as separate bean in the factory. registry.registerBeanDefinition(targetBeanName, targetDefinition); // Return the scoped proxy definition as primary bean definition // (potentially an inner bean). return new BeanDefinitionHolder(proxyDefinition, originalBeanName, definition.getAliases()); }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testGetBeanByTypeFiltersOutNonAutowireCandidates() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class); RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class); RootBeanDefinition na1 = new RootBeanDefinition(TestBean.class); na1.setAutowireCandidate(false); lbf.registerBeanDefinition("bd1", bd1); lbf.registerBeanDefinition("na1", na1); TestBean actual = lbf.getBean(TestBean.class); // na1 was filtered assertSame(lbf.getBean("bd1", TestBean.class), actual); lbf.registerBeanDefinition("bd2", bd2); try {//from w w w. j a va2 s . c om lbf.getBean(TestBean.class); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (NoSuchBeanDefinitionException ex) { // expected } }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testGetBeanByTypeInstanceFiltersOutNonAutowireCandidates() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd1 = createConstructorDependencyBeanDefinition(99); RootBeanDefinition bd2 = createConstructorDependencyBeanDefinition(43); RootBeanDefinition na1 = createConstructorDependencyBeanDefinition(21); na1.setAutowireCandidate(false); lbf.registerBeanDefinition("bd1", bd1); lbf.registerBeanDefinition("na1", na1); ConstructorDependency actual = lbf.getBean(ConstructorDependency.class, 42); // na1 was filtered assertThat(actual.beanName, equalTo("bd1")); lbf.registerBeanDefinition("bd2", bd2); try {/*from w ww.j av a 2 s.com*/ lbf.getBean(TestBean.class, 67); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (NoSuchBeanDefinitionException ex) { // expected } }