@Override public Object resolveShortcut(BeanFactory beanFactory) { return beanFactory.getBean(this.shortcut, this.requiredType); } }
/** * Return a bean instance if necessary resolving the bean name through the BeanFactory. */ public Object resolveBean() { return (this.bean instanceof String ? obtainBeanFactory().getBean((String) this.bean) : this.bean); }
@Override public Object resolveCandidate(String beanName, Class<?> requiredType, BeanFactory beanFactory) { return (!ObjectUtils.isEmpty(args) ? beanFactory.getBean(beanName, args) : super.resolveCandidate(beanName, requiredType, beanFactory)); } };
@Test public void testIsDynamicProxyWhenAutodetectingInterfacesForPrototype() { ITestBean test1 = (ITestBean) factory.getBean("test4"); assertTrue("test4 is a dynamic proxy", Proxy.isProxyClass(test1.getClass())); }
@Test public void factoryBeanObjectLookupByName() { Object fooFactory = beanFactory.getBean("fooFactory"); assertThat(fooFactory, instanceOf(Foo.class)); }
private void aliasesAreRespected(Class<?> testClass, Supplier<TestBean> testBeanSupplier, String beanName) { TestBean testBean = testBeanSupplier.get(); BeanFactory factory = initBeanFactory(testClass); assertSame(testBean, factory.getBean(beanName)); Arrays.stream(factory.getAliases(beanName)).map(factory::getBean).forEach(alias -> assertSame(testBean, alias)); // method name should not be registered exception.expect(NoSuchBeanDefinitionException.class); factory.getBean("methodName"); }
/** * Test invoker is automatically added to manipulate target. */ @Test public void testAutoInvoker() { String name = "Hieronymous"; TestBean target = (TestBean) factory.getBean("test"); target.setName(name); ITestBean autoInvoker = (ITestBean) factory.getBean("autoInvoker"); assertTrue(autoInvoker.getName().equals(name)); }
/** * It should be illegal to dereference a normal bean as a factory. */ @Test(expected = BeanIsNotAFactoryException.class) public void rejectsFactoryGetOnNormalBean() { getBeanFactory().getBean("&rod"); }
@Test public void simplestPossibleConfig() { BeanFactory factory = initBeanFactory(SimplestPossibleConfig.class); String stringBean = factory.getBean("stringBean", String.class); assertEquals("foo", stringBean); }
@Test public void beanPostProcessor() { TestBean kerry = (TestBean) getBeanFactory().getBean("kerry"); TestBean kathy = (TestBean) getBeanFactory().getBean("kathy"); DummyFactory factory = (DummyFactory) getBeanFactory().getBean("&singletonFactory"); TestBean factoryCreated = (TestBean) getBeanFactory().getBean("singletonFactory"); assertTrue(kerry.isPostProcessed()); assertTrue(kathy.isPostProcessed()); assertTrue(factory.isPostProcessed()); assertTrue(factoryCreated.isPostProcessed()); }
@Test public void testRegexpApplied() throws Exception { BeanFactory bf = getBeanFactory(); ITestBean test = (ITestBean) bf.getBean("test"); MethodCounter counter = (MethodCounter) bf.getBean("countingAdvice"); assertEquals(0, counter.getCalls()); test.getName(); assertEquals(1, counter.getCalls()); }
@Test public void testJdkProxyWithDoubleProxying() { ITestBean tb = (ITestBean) beanFactory.getBean("doubleJdk"); jdkAssertions(tb, 2); assertEquals("doubleJdk", tb.getName()); }
@Test public void testJdkProxyWithWildcardMatch() { ITestBean tb = (ITestBean) beanFactory.getBean("jdk1"); jdkAssertions(tb, 1); assertEquals("jdk1", tb.getName()); }
/** * If no pointcuts match (no attrs) there should be proxying. */ @Test public void testNoProxy() throws Exception { BeanFactory bf = getBeanFactory(); Object o = bf.getBean("noSetters"); assertFalse(AopUtils.isAopProxy(o)); }
@Test public void descriptionButNoProperties() { TestBean validEmpty = (TestBean) getBeanFactory().getBean("validEmptyWithDescription"); assertEquals(0, validEmpty.getAge()); }
@Test public void testCglibProxyWithWildcardMatch() { TestBean tb = (TestBean) beanFactory.getBean("cglib1"); cglibAssertions(tb); assertEquals("cglib1", tb.getName()); }
@Test public void testNoProxy() { TestBean tb = (TestBean) beanFactory.getBean("noproxy"); assertFalse(AopUtils.isAopProxy(tb)); assertEquals("noproxy", tb.getName()); }
@Test public void findsValidInstance() { Object o = getBeanFactory().getBean("rod"); assertTrue("Rod bean is a TestBean", o instanceof TestBean); TestBean rod = (TestBean) o; assertTrue("rod.name is Rod", rod.getName().equals("Rod")); assertTrue("rod.age is 31", rod.getAge() == 31); }
@Test public void factoryPrototype() throws Exception { assertTrue(getBeanFactory().isSingleton("&prototypeFactory")); assertFalse(getBeanFactory().isSingleton("prototypeFactory")); TestBean tb = (TestBean) getBeanFactory().getBean("prototypeFactory"); assertTrue(!tb.getName().equals(DummyFactory.SINGLETON_NAME)); TestBean tb2 = (TestBean) getBeanFactory().getBean("prototypeFactory"); assertTrue("Prototype references !=", tb != tb2); }
@Test public void configWithObjectReturnType() { BeanFactory factory = initBeanFactory(ConfigWithNonSpecificReturnTypes.class); assertEquals(Object.class, factory.getType("stringBean")); assertFalse(factory.isTypeMatch("stringBean", String.class)); String stringBean = factory.getBean("stringBean", String.class); assertEquals("foo", stringBean); }