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

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

Introduction

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

Prototype

@Override
    public void destroyScopedBean(String beanName) 

Source Link

Usage

From source file:com.helpinput.spring.registinerceptor.AbstractBeanRegistInterceptor.java

@Override
public boolean afterRemove(Class<?> clz, String beanName, String scope, DefaultListableBeanFactory dlbf) {
    if (getCondition(clz)) {
        String refBeanName = beanName + beanNameSuffix;
        if (application_scope.equals(scope))
            dlbf.destroyScopedBean(refBeanName);
        else if (singleton_scope.equals(scope))
            dlbf.destroySingleton(refBeanName);
        dlbf.removeBeanDefinition(refBeanName);
        return true;
    }/* w ww . j av a  2s. c om*/
    return false;
}

From source file:com.helpinput.spring.BeanRegister.java

public static boolean removeBean(DefaultListableBeanFactory dlbf, BeanInfo beanInfo, String beanName) {
    BeanDefinition bd = null;/*from   w ww  .j a v a  2  s  . c  o m*/
    if (!Utils.hasLength(beanName))
        if (beanInfo != null)
            beanName = beanInfo.beanName;
    if (!Utils.hasLength(beanName))
        return false;

    try {
        bd = dlbf.getBeanDefinition(beanName);
        if (bd != null) {
            //?bean? relativePath?, ??
            //               BeanRegister.runOnUnregisger(beanName, dlbf);
            String scope = bd.getScope();
            /**
             * bean?application,singletonbeansession?view? flash?
             * requestbean,
             * session,view,flash,requestbeanapplicationbean
             * application,singletonbean
             * scopebeanbeanbean
             */
            if (application_scope.equals(scope))
                dlbf.destroyScopedBean(beanName);
            else if (singleton_scope.equals(scope))
                dlbf.destroySingleton(beanName);

            dlbf.removeBeanDefinition(beanName);
            if (beanInfo != null && beanInfo.beanClass != null
                    && PropertyEditor.class.isAssignableFrom(beanInfo.beanClass)) {
                ContextHolder.refreshers.remover(beanName);
            }

            List<BeanRegistInterceptor> interceptors = ContextHolder.beanRegistIntercpterHolder.getList();
            if (Utils.hasLength(interceptors)) {
                for (BeanRegistInterceptor beanRegistInterceptor : interceptors) {
                    if (beanRegistInterceptor.afterRemove(beanInfo.beanClass, beanName, scope, dlbf))
                        break;
                }
            }

            logRegist(Info.Removed, (String) bd.getAttribute(relativePath), beanInfo.beanName, scope);
            return true;
        }
    } catch (NoSuchBeanDefinitionException e) {
        //? BeanDefinition,????beanInfo,
        return true;
    }
    return false;
}