@Test public void testNullableFieldInjectionWithBeanAvailable() { bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); NullableFieldInjectionBean bean = (NullableFieldInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); }
@Test public void testNullableMethodInjectionWithBeanAvailable() { bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); NullableMethodInjectionBean bean = (NullableMethodInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); }
@Test public void testProviderOfOptionalMethodInjectionWithBeanAvailable() { bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ProviderOfOptionalMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); ProviderOfOptionalMethodInjectionBean bean = (ProviderOfOptionalMethodInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get()); }
@Test public void testProviderSerialization() throws Exception { ProviderTestBean testBean = beanFactory.getBean("providerTestBean", ProviderTestBean.class); Provider<?> provider = testBean.getProvider(); provider = (Provider) SerializationTestUtils.serializeAndDeserialize(provider); Date date1 = (Date) provider.get(); Date date2 = (Date) provider.get(); assertTrue(date1 != date2); }
@Test public void trimValuesIsOffByDefault() { PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); System.setProperty("my.name", " myValue "); DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.registerBeanDefinition("testBean", rootBeanDefinition(TestBean.class) .addPropertyValue("name", "${my.name}") .getBeanDefinition()); ppc.postProcessBeanFactory(bf); assertThat(bf.getBean(TestBean.class).getName(), equalTo(" myValue ")); System.clearProperty("my.name"); }
@Test public void testPropertyPlaceholderConfigurerWithSystemPropertyFallback() { factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) .addPropertyValue("country", "${os.name}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.postProcessBeanFactory(factory); TestBean tb = (TestBean) factory.getBean("tb"); assertEquals(System.getProperty("os.name"), tb.getCountry()); }
@Test public void testServiceFactoryBean() { assumeTrue(ServiceLoader.load(DocumentBuilderFactory.class).iterator().hasNext()); DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); RootBeanDefinition bd = new RootBeanDefinition(ServiceFactoryBean.class); bd.getPropertyValues().add("serviceType", DocumentBuilderFactory.class.getName()); bf.registerBeanDefinition("service", bd); assertTrue(bf.getBean("service") instanceof DocumentBuilderFactory); }
@Test public void testWithOverloadedArg() { AbstractBean bean = (AbstractBean) beanFactory.getBean("abstractBean"); assertNotNull(bean); TestBean expected = bean.get("haha"); assertEquals(TestBean.class, expected.getClass()); assertEquals("haha", expected.getName()); assertSame(bean, beanFactory.getBean(BeanConsumer.class).abstractBean); }
@Test public void testNullableFieldInjectionWithBeanNotAvailable() { bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableFieldInjectionBean.class)); NullableFieldInjectionBean bean = (NullableFieldInjectionBean) bf.getBean("annotatedBean"); assertNull(bean.getTestBean()); }
@Test public void setSystemPropertiesMode_defaultIsFallback() { registerWithGeneratedName(p1BeanDef, bf); ppc.postProcessBeanFactory(bf); TestBean bean = bf.getBean(TestBean.class); assertThat(bean.getName(), equalTo(P1_LOCAL_PROPS_VAL)); }
@Test public void testSpringInitBean() throws Exception { try { beanFactory.getBean("spring-init"); fail("expected security exception"); } catch (BeanCreationException ex) { assertTrue(ex.getCause() instanceof SecurityException); } }
@Test public void testConstructor() throws Exception { try { beanFactory.getBean("constructor"); fail("expected security exception"); } catch (BeanCreationException ex) { // expected assertTrue(ex.getMostSpecificCause() instanceof SecurityException); } }
@Test public void setSystemSystemPropertiesMode_toOverride_andSetSearchSystemEnvironment_toFalse() { registerWithGeneratedName(p1BeanDef, bf); System.clearProperty(P1); // will now fall all the way back to system environment ppc.setSearchSystemEnvironment(false); ppc.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE); ppc.postProcessBeanFactory(bf); TestBean bean = bf.getBean(TestBean.class); assertThat(bean.getName(), equalTo(P1_LOCAL_PROPS_VAL)); // has to resort to local props }
@Test public void testWithOverloadedArg() { AbstractBean bean = (AbstractBean) beanFactory.getBean("abstractBean"); assertNotNull(bean); TestBean expected = bean.get("haha"); assertEquals(TestBean.class, expected.getClass()); assertEquals("haha", expected.getName()); }
@Test public void setSystemSystemPropertiesMode_toOverride_andResolveFromSystemProperties() { registerWithGeneratedName(p1BeanDef, bf); ppc.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE); ppc.postProcessBeanFactory(bf); TestBean bean = bf.getBean(TestBean.class); assertThat(bean.getName(), equalTo(P1_SYSTEM_PROPS_VAL)); }
@Test public void testPropertyOverrideConfigurerWithInvalidPropertiesFile() { BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc = new PropertyOverrideConfigurer(); poc.setLocations(TEST_PROPS, XTEST_PROPS); poc.setIgnoreResourceNotFound(true); poc.postProcessBeanFactory(factory); IndexedTestBean tb = (IndexedTestBean) factory.getBean("tb"); assertEquals(99, tb.getArray()[0].getAge()); assertEquals("test", ((TestBean) tb.getList().get(1)).getName()); }
@Test public void testWithTwoConstructorArg() { AbstractBean bean = (AbstractBean) beanFactory.getBean("abstractBean"); assertNotNull(bean); TestBean expected = bean.getTwoArguments("haha", 72); assertEquals(TestBean.class, expected.getClass()); assertEquals("haha", expected.getName()); assertEquals(72, expected.getAge()); }