Example usage for org.springframework.beans.factory.support DefaultListableBeanFactory destroySingletons

List of usage examples for org.springframework.beans.factory.support DefaultListableBeanFactory destroySingletons

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support DefaultListableBeanFactory destroySingletons.

Prototype

@Override
    public void destroySingletons() 

Source Link

Usage

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);
}