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

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

Introduction

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

Prototype

@Override
    public void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException 

Source Link

Usage

From source file:org.cloudfoundry.reconfiguration.spring.AbstractCloudServiceBeanFactoryPostProcessor.java

private boolean reconfigureBean(DefaultListableBeanFactory beanFactory, Class<?> beanClass, String beanName) {
    Object serviceConnector = getCloud().getSingletonServiceConnector(beanClass, null);
    beanFactory.registerSingleton(getServiceBeanName(), serviceConnector);
    beanFactory.removeBeanDefinition(beanName);
    beanFactory.registerAlias(getServiceBeanName(), beanName);

    this.logger.info(String.format("Reconfigured bean %s into singleton service connector %s", beanName,
            serviceConnector.toString()));

    return true;//from   w  ww .  j  a v  a 2 s .  c  om
}

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;
    }/*from w w  w .  j a  v  a2s .co m*/
    return false;
}

From source file:com.framework.demo.spring.SpeedUpSpringProcessor.java

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    if (!(beanFactory instanceof DefaultListableBeanFactory)) {
        log.error("if speed up spring, bean factory must be type of DefaultListableBeanFactory");
        return;//from   w w w.  j  a v  a  2s. c o m
    }

    DefaultListableBeanFactory listableBeanFactory = (DefaultListableBeanFactory) beanFactory;

    for (String beanName : listableBeanFactory.getBeanDefinitionNames()) {
        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);

        //?? 
        if (needRemove(beanName, beanDefinition)) {
            listableBeanFactory.removeBeanDefinition(beanName);
            continue;
        }

        //?lazy
        if (needLazyInit(beanName)) {
            //                beanDefinition.setLazyInit(true);
        }
    }
}

From source file:cn.guoyukun.spring.SpeedUpSpringProcessor.java

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    if (!(beanFactory instanceof DefaultListableBeanFactory)) {
        log.error("if speed up spring, bean factory must be type of DefaultListableBeanFactory");
        return;/* w w w. j av a2 s . c  o  m*/
    }

    DefaultListableBeanFactory listableBeanFactory = (DefaultListableBeanFactory) beanFactory;

    for (String beanName : listableBeanFactory.getBeanDefinitionNames()) {
        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);

        //?? 
        if (needRemove(beanName, beanDefinition)) {
            listableBeanFactory.removeBeanDefinition(beanName);
            continue;
        }

        //?lazy
        if (needLazyInit(beanName)) {
            beanDefinition.setLazyInit(true);
        }
    }
}

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

public static boolean removeBean(DefaultListableBeanFactory dlbf, BeanInfo beanInfo, String beanName) {
    BeanDefinition bd = null;//from w ww .  ja va 2 s  . co  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;
}

From source file:it.cosenonjaviste.alfresco.annotations.processors.runtime.WebScriptConfigurer.java

@Override
protected void processBeanDefinition(ConfigurableListableBeanFactory beanFactory, BeanDefinition bd,
        String beanClassName, String definitionName) throws FatalBeanException {
    if (beanFactory instanceof DefaultListableBeanFactory) {
        DefaultListableBeanFactory factory = (DefaultListableBeanFactory) beanFactory;
        try {//from  w  ww  . j a  va2  s  .  com
            final WebScript webScript = AnnotationUtils.findAnnotation(Class.forName(beanClassName),
                    WebScript.class);
            if (webScript != null) {
                String beanName = webScript.value();
                if (StringUtils.hasText(beanName)) {
                    final String webScriptName = "webscript." + beanName + "."
                            + webScript.method().toString().toLowerCase();
                    factory.removeBeanDefinition(definitionName);
                    factory.registerBeanDefinition(webScriptName, bd);
                } else {
                    throw new FatalBeanException(
                            String.format("%s is @WebScript annotated, but no value set.", beanClassName));
                }
            }
        } catch (ClassNotFoundException e) {
            logger.warn(String.format(
                    "ClassNotFoundException while searching for ChildOf annotation on bean name '%s' of type '%s'. This error is expected on Alfresco Community 4.2.c. for some classes in package 'org.alfresco.repo'",
                    definitionName, beanClassName));
        }
    } else {
        logger.error(String.format(
                "Unable to register '%s' as webscript because beanFactory is not instance of 'DefaultListableBeanFactory'",
                definitionName));
    }
}

From source file:com.fitbur.testify.di.spring.SpringServiceLocator.java

@Override
public void replaceWithConstant(Set<Class<?>> contracts, String name, Object instance) {
    DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();

    for (Class<?> contract : contracts) {
        String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(beanFactory, contract, true,
                false);//  ww  w . j a va2 s.  co  m
        for (String beanName : beanNames) {
            beanFactory.removeBeanDefinition(beanName);
        }
    }

    beanFactory.registerSingleton(name, instance);
}

From source file:com.helpinput.spring.refresher.SessiontRefresher.java

@Override
public void refresh(ApplicationContext context, Map<Class<?>, ScanedType> scanedClasses) {

    boolean needRefreshSessionFactory = false;
    for (Entry<Class<?>, ScanedType> entry : scanedClasses.entrySet()) {
        if (entry.getValue().getValue() > ScanedType.SAME.getValue()
                && entry.getKey().getAnnotation(Entity.class) != null) {
            needRefreshSessionFactory = true;
            break;
        }/*from  w ww  .j  av a2s. co m*/
    }
    if (needRefreshSessionFactory) {
        DefaultListableBeanFactory dlbf = (DefaultListableBeanFactory) ((AbstractApplicationContext) context)
                .getBeanFactory();

        //testUserManager(dlbf);

        final String sessionFactory = "sessionFactory";
        final String annotatedClasses = "annotatedClasses";
        final String setSessionFactory = "setSessionFactory";

        BeanDefinition oldSessionFactoryDef = dlbf.getBeanDefinition(sessionFactory);

        if (oldSessionFactoryDef != null) {
            dlbf.removeBeanDefinition(sessionFactory);
            MutablePropertyValues propertyValues = oldSessionFactoryDef.getPropertyValues();
            PropertyValue oldPropertyValue = propertyValues.getPropertyValue(annotatedClasses);

            propertyValues.removePropertyValue(annotatedClasses);

            BeanDefinition newSessionFactoryDef = BeanDefinitionBuilder
                    .rootBeanDefinition(oldSessionFactoryDef.getBeanClassName()).getBeanDefinition();

            List<PropertyValue> propertyValueList = newSessionFactoryDef.getPropertyValues()
                    .getPropertyValueList();

            propertyValueList.addAll(propertyValues.getPropertyValueList());
            propertyValueList.add(new PropertyValue(annotatedClasses, getManageList(dlbf, oldPropertyValue)));

            dlbf.registerBeanDefinition(sessionFactory, newSessionFactoryDef);

            SessionFactory sessionFactoryImpl = (SessionFactory) dlbf.getBean(sessionFactory);

            String[] beanNames = dlbf.getBeanDefinitionNames();
            for (String beanName : beanNames) {
                BeanDefinition beanDefinition = dlbf.getBeanDefinition(beanName);

                PropertyValues pValues = beanDefinition.getPropertyValues();
                if (pValues.getPropertyValue(sessionFactory) != null) {
                    Object theBean = dlbf.getBean(beanName);
                    Method method = Utils.findMethod(theBean, setSessionFactory, sessionFactoryImpl);
                    if (method != null)
                        Utils.InvokedMethod(theBean, method, sessionFactoryImpl);
                }
            }
        }
    }
}

From source file:com.wavemaker.runtime.data.cloudfoundry.CloudFoundryDataServiceBeanFactoryPostProcessor.java

/**
 * @param defaultListableBeanFactory/* w ww  .  ja  v a2s.  c om*/
 */
private void processDataSources(DefaultListableBeanFactory defaultListableBeanFactory) {
    String[] dataSourceBeanNames = defaultListableBeanFactory.getBeanNamesForType(DataSource.class);

    if (dataSourceBeanNames.length <= 1) {
        // When there is only 1 DataSource, the provided auto-staging should be sufficient
        return;
    }

    for (String dsBean : dataSourceBeanNames) {
        if (!dsBean.endsWith(DS_BEAN_SUFFIX)) {
            continue;
        }

        String serviceName = dsBean.substring(0, dsBean.indexOf(DS_BEAN_SUFFIX));

        if (!serviceExists(serviceName)) {
            boolean foundAlias = false;
            for (String alias : defaultListableBeanFactory.getAliases(dsBean)) {
                if (serviceExists(alias)) {
                    serviceName = alias;
                    foundAlias = true;
                    break;
                }
            }
            if (!foundAlias) {
                log.warn("Expected to find a service with the name '" + serviceName + "' but none was found.");
                continue;
            }
        }

        RdbmsServiceInfo service = this.cloudEnvironment.getServiceInfo(serviceName, RdbmsServiceInfo.class);
        if (service != null) {
            defaultListableBeanFactory.removeBeanDefinition(dsBean);
            DataSource cfDataSource = new RdbmsServiceCreator().createService(service);
            defaultListableBeanFactory.registerSingleton(dsBean, cfDataSource);
        } else {
            log.warn("Service " + serviceName + " exists, but is not an RDBMS service as expected.");
        }
    }
}

From source file:com.liferay.arkadiko.bean.AKBeanPostProcessor.java

/**
 * Post process bean factory./*from w ww . ja va 2  s . c om*/
 *
 * @param beanFactory the bean factory
 * @throws BeansException the beans exception
 */
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    if (!(beanFactory instanceof DefaultListableBeanFactory)) {
        return;
    }

    DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory;

    defaultListableBeanFactory.setInstantiationStrategy(this);

    AutowireCandidateResolver autowireCandidateResolver = defaultListableBeanFactory
            .getAutowireCandidateResolver();

    defaultListableBeanFactory
            .setAutowireCandidateResolver(new AKAutowireCandidateResolver(autowireCandidateResolver));

    for (String beanName : defaultListableBeanFactory.getBeanDefinitionNames()) {

        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);

        if (!(beanDefinition instanceof AbstractBeanDefinition)) {
            continue;
        }

        String className = beanDefinition.getBeanClassName();

        if (className == null) {
            continue;
        }

        try {
            AKBeanDefinition akBeanDefinition = new AKBeanDefinition(this,
                    (AbstractBeanDefinition) beanDefinition, beanName, getServiceRegistry());

            defaultListableBeanFactory.removeBeanDefinition(beanName);

            defaultListableBeanFactory.registerBeanDefinition(beanName, akBeanDefinition);
        } catch (Exception e) {
            if (_log.isLoggable(Level.SEVERE)) {
                _log.log(Level.SEVERE, e.getMessage(), e);
            }
        }
    }
}