List of usage examples for org.springframework.beans.factory.support DefaultListableBeanFactory destroySingletons
@Override public void destroySingletons()
From source file:ch.tatool.app.service.impl.UserAccountServiceImpl.java
/** * Closes an opened account.//from w w w . ja va 2 s.co m * This method should free all opened resources. * * Note: This method does NOT save the account data! */ public void closeAccount(UserAccount account) { // force the database to shutdown final UserAccountImpl userAccount = (UserAccountImpl) account; // shutdown the database - necessary for hsql. we do it currently by adding a shutdown=true parameter to the connection string userAccount.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(TransactionStatus status) { UserAccountDAO userAccountDAO = userAccount.getUserAccountDAO(); userAccountDAO.shutdown(); } }); // destroy all singletons - this will trigger the close method of the DataSource DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) userAccount.getBeanFactory(); beanFactory.destroySingletons(); }
From source file:org.springframework.aop.framework.autoproxy.target.AbstractBeanFactoryBasedTargetSourceCreator.java
/** * Destroys the internal BeanFactory on shutdown of the TargetSourceCreator. * @see #getInternalBeanFactoryForBean// w ww . j a va 2s . c om */ @Override public void destroy() { synchronized (this.internalBeanFactories) { for (DefaultListableBeanFactory bf : this.internalBeanFactories.values()) { bf.destroySingletons(); } } }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testBeanPostProcessorWithWrappedObjectAndDisposableBean() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd = new RootBeanDefinition(BeanWithDisposableBean.class); lbf.registerBeanDefinition("test", bd); lbf.addBeanPostProcessor(new BeanPostProcessor() { @Override//from ww w.j a v a 2s. c o m public Object postProcessBeforeInitialization(Object bean, String beanName) { return new TestBean(); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) { return bean; } }); BeanWithDisposableBean.closed = false; lbf.preInstantiateSingletons(); lbf.destroySingletons(); assertTrue("Destroy method invoked", BeanWithDisposableBean.closed); }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testBeanPostProcessorWithWrappedObjectAndCloseable() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd = new RootBeanDefinition(BeanWithCloseable.class); lbf.registerBeanDefinition("test", bd); lbf.addBeanPostProcessor(new BeanPostProcessor() { @Override//from w w w. j av a 2 s.c o m public Object postProcessBeforeInitialization(Object bean, String beanName) { return new TestBean(); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) { return bean; } }); BeanWithDisposableBean.closed = false; lbf.preInstantiateSingletons(); lbf.destroySingletons(); assertTrue("Destroy method invoked", BeanWithCloseable.closed); }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testBeanPostProcessorWithWrappedObjectAndDestroyMethod() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd = new RootBeanDefinition(BeanWithDestroyMethod.class); bd.setDestroyMethodName("close"); lbf.registerBeanDefinition("test", bd); lbf.addBeanPostProcessor(new BeanPostProcessor() { @Override/*w ww .j a v a 2s .c o m*/ public Object postProcessBeforeInitialization(Object bean, String beanName) { return new TestBean(); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) { return bean; } }); BeanWithDestroyMethod.closeCount = 0; lbf.preInstantiateSingletons(); lbf.destroySingletons(); assertEquals("Destroy methods invoked", 1, BeanWithDestroyMethod.closeCount); }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testDestroyMethodOnInnerBean() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition innerBd = new RootBeanDefinition(BeanWithDestroyMethod.class); innerBd.setDestroyMethodName("close"); RootBeanDefinition bd = new RootBeanDefinition(BeanWithDestroyMethod.class); bd.setDestroyMethodName("close"); bd.getPropertyValues().add("inner", innerBd); lbf.registerBeanDefinition("test", bd); BeanWithDestroyMethod.closeCount = 0; lbf.preInstantiateSingletons();/* ww w.ja va 2 s . c o m*/ lbf.destroySingletons(); assertEquals("Destroy methods invoked", 2, BeanWithDestroyMethod.closeCount); }
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testDestroyMethodOnInnerBeanAsPrototype() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition innerBd = new RootBeanDefinition(BeanWithDestroyMethod.class); innerBd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); innerBd.setDestroyMethodName("close"); RootBeanDefinition bd = new RootBeanDefinition(BeanWithDestroyMethod.class); bd.setDestroyMethodName("close"); bd.getPropertyValues().add("inner", innerBd); lbf.registerBeanDefinition("test", bd); BeanWithDestroyMethod.closeCount = 0; lbf.preInstantiateSingletons();//from ww w. ja v a 2s . c o m lbf.destroySingletons(); assertEquals("Destroy methods invoked", 1, BeanWithDestroyMethod.closeCount); }
From source file:org.springframework.beans.factory.xml.XmlBeanFactoryTests.java
@Test public void testInnerBeans() throws IOException { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE); InputStream inputStream = getClass().getResourceAsStream(REFTYPES_CONTEXT.getPath()); try {/* ww w .j a v a2 s. c om*/ reader.loadBeanDefinitions(new InputSource(inputStream)); } finally { inputStream.close(); } // Let's create the outer bean named "innerBean", // to check whether it doesn't create any conflicts // with the actual inner beans named "innerBean". xbf.getBean("innerBean"); TestBean hasInnerBeans = (TestBean) xbf.getBean("hasInnerBeans"); assertEquals(5, hasInnerBeans.getAge()); TestBean inner1 = (TestBean) hasInnerBeans.getSpouse(); assertNotNull(inner1); assertEquals("innerBean#1", inner1.getBeanName()); assertEquals("inner1", inner1.getName()); assertEquals(6, inner1.getAge()); assertNotNull(hasInnerBeans.getFriends()); Object[] friends = hasInnerBeans.getFriends().toArray(); assertEquals(3, friends.length); DerivedTestBean inner2 = (DerivedTestBean) friends[0]; assertEquals("inner2", inner2.getName()); assertTrue(inner2.getBeanName().startsWith(DerivedTestBean.class.getName())); assertFalse(xbf.containsBean("innerBean#1")); assertNotNull(inner2); assertEquals(7, inner2.getAge()); TestBean innerFactory = (TestBean) friends[1]; assertEquals(DummyFactory.SINGLETON_NAME, innerFactory.getName()); TestBean inner5 = (TestBean) friends[2]; assertEquals("innerBean#2", inner5.getBeanName()); assertNotNull(hasInnerBeans.getSomeMap()); assertEquals(2, hasInnerBeans.getSomeMap().size()); TestBean inner3 = (TestBean) hasInnerBeans.getSomeMap().get("someKey"); assertEquals("Jenny", inner3.getName()); assertEquals(30, inner3.getAge()); TestBean inner4 = (TestBean) hasInnerBeans.getSomeMap().get("someOtherKey"); assertEquals("inner4", inner4.getName()); assertEquals(9, inner4.getAge()); TestBean hasInnerBeansForConstructor = (TestBean) xbf.getBean("hasInnerBeansForConstructor"); TestBean innerForConstructor = (TestBean) hasInnerBeansForConstructor.getSpouse(); assertNotNull(innerForConstructor); assertEquals("innerBean#3", innerForConstructor.getBeanName()); assertEquals("inner1", innerForConstructor.getName()); assertEquals(6, innerForConstructor.getAge()); hasInnerBeansForConstructor = (TestBean) xbf.getBean("hasInnerBeansAsPrototype"); innerForConstructor = (TestBean) hasInnerBeansForConstructor.getSpouse(); assertNotNull(innerForConstructor); assertEquals("innerBean", innerForConstructor.getBeanName()); assertEquals("inner1", innerForConstructor.getName()); assertEquals(6, innerForConstructor.getAge()); hasInnerBeansForConstructor = (TestBean) xbf.getBean("hasInnerBeansAsPrototype"); innerForConstructor = (TestBean) hasInnerBeansForConstructor.getSpouse(); assertNotNull(innerForConstructor); assertEquals("innerBean", innerForConstructor.getBeanName()); assertEquals("inner1", innerForConstructor.getName()); assertEquals(6, innerForConstructor.getAge()); xbf.destroySingletons(); assertTrue(inner1.wasDestroyed()); assertTrue(inner2.wasDestroyed()); assertTrue(innerFactory.getName() == null); assertTrue(inner5.wasDestroyed()); }
From source file:org.springframework.beans.factory.xml.XmlBeanFactoryTests.java
/** * Check that InitializingBean method is called first. *///from ww w . j ava 2s. com @Test public void testInitializingBeanAndInitMethod() throws Exception { InitAndIB.constructed = false; DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); assertFalse(InitAndIB.constructed); xbf.preInstantiateSingletons(); assertFalse(InitAndIB.constructed); InitAndIB iib = (InitAndIB) xbf.getBean("init-and-ib"); assertTrue(InitAndIB.constructed); assertTrue(iib.afterPropertiesSetInvoked && iib.initMethodInvoked); assertTrue(!iib.destroyed && !iib.customDestroyed); xbf.destroySingletons(); assertTrue(iib.destroyed && iib.customDestroyed); xbf.destroySingletons(); assertTrue(iib.destroyed && iib.customDestroyed); }
From source file:org.springframework.beans.factory.xml.XmlBeanFactoryTests.java
/** * Check that InitializingBean method is not called twice. *///from ww w . jav a2 s . c o m @Test public void testInitializingBeanAndSameInitMethod() throws Exception { InitAndIB.constructed = false; DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); assertFalse(InitAndIB.constructed); xbf.preInstantiateSingletons(); assertFalse(InitAndIB.constructed); InitAndIB iib = (InitAndIB) xbf.getBean("ib-same-init"); assertTrue(InitAndIB.constructed); assertTrue(iib.afterPropertiesSetInvoked && !iib.initMethodInvoked); assertTrue(!iib.destroyed && !iib.customDestroyed); xbf.destroySingletons(); assertTrue(iib.destroyed && !iib.customDestroyed); xbf.destroySingletons(); assertTrue(iib.destroyed && !iib.customDestroyed); }