Example usage for org.springframework.beans.factory.config BeanPostProcessor BeanPostProcessor

List of usage examples for org.springframework.beans.factory.config BeanPostProcessor BeanPostProcessor

Introduction

In this page you can find the example usage for org.springframework.beans.factory.config BeanPostProcessor BeanPostProcessor.

Prototype

BeanPostProcessor

Source Link

Usage

From source file:com.example.autoconfigure.initializer.ExampleApplicationContextInitializer.java

@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
    applicationContext.getBeanFactory().registerSingleton("printNamePostProcessor", new BeanPostProcessor() {

        @Override/*w  w w .  j ava 2s. c om*/
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("Initialized bean " + beanName);
            return bean;
        }

    });
}

From source file:com.springsource.open.jms.SharedDatabaseApplication.java

@Bean
public BeanPostProcessor jmsPostProcessor() {
    return new BeanPostProcessor() {

        @Override/*from  w  w  w.  j  a v a2  s.c o  m*/
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof JmsTemplate) {
                JmsTemplate template = (JmsTemplate) bean;
                template.setReceiveTimeout(200L);
                template.setSessionTransacted(true);
            }
            return bean;
        }
    };
}

From source file:com.springsource.open.foo.ListenerApplication.java

@Bean
public BeanPostProcessor connectionFactoryPostProcessor(PlatformTransactionManager transactionManager) {
    return new BeanPostProcessor() {

        @Override//from   ww  w . ja  v  a2s .c o m
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof SimpleRabbitListenerContainerFactory) {
                ((SimpleRabbitListenerContainerFactory) bean).setTransactionManager(transactionManager);
            }
            return bean;
        }
    };
}

From source file:jetbrick.template.web.springboot.JetTemplateAutoConfiguration.java

@Bean
public BeanPostProcessor autoRegiesterBeanPostProcessor() {
    return new BeanPostProcessor() {
        @Override/*from  w  ww . java  2 s  .com*/
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            if (bean != null && bean.getClass() == JetTemplateViewResolver.class) {
                JetEngine engine = ((JetTemplateViewResolver) bean).getJetEngine();

                // Tags
                engine.getGlobalResolver().registerTags(SpringedTags.class);
            }
            return bean;
        }
    };
}

From source file:com.github.lothar.security.acl.config.AclConfiguration.java

@Bean
public BeanPostProcessor aclStrategyPostProcessor(AclStrategy defaultAclStrategy) {
    return new BeanPostProcessor() {
        @Override//from   w w w.j  a va  2s .  com
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof AclStrategyProvider) {
                AclStrategyProvider aclStrategyProvider = (AclStrategyProvider) bean;
                aclStrategyProvider.setDefaultStrategy(defaultAclStrategy);
                logger.debug("Set defaultAclStrategy : {}", defaultAclStrategy);
            }
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    };
}

From source file:org.sakaiproject.entitybroker.util.spring.BeanCollectorAutoRegistrar.java

public void afterPropertiesSet() throws Exception {
    log.debug("setAC: " + applicationContext.getDisplayName());
    ConfigurableApplicationContext cac = (ConfigurableApplicationContext) applicationContext;
    ConfigurableBeanFactory cbf = (ConfigurableBeanFactory) cac.getBeanFactory();

    cbf.addBeanPostProcessor(new BeanPostProcessor() {
        @SuppressWarnings("unchecked")
        public Object postProcessBeforeInitialization(Object bean, String beanName) {
            if (bean instanceof BeanCollector<?>) {
                BeanCollector<Object> bc = (BeanCollector<Object>) bean;
                Class<?> c = bc.getCollectedType();
                if (c == null) {
                    throw new IllegalArgumentException("collected type cannot be null");
                }/*from   ww w  .  j  ava2s  . c o m*/

                List<Object> l = getAutoRegisteredBeansOfType(c);
                logCollectedBeanInsertion(beanName, c.getName(), l);
                bc.setCollectedBeans(l);
            } else if (bean instanceof BeanMapCollector) {
                BeanMapCollector bc = (BeanMapCollector) bean;
                Class<?>[] cArray = bc.getCollectedTypes();
                if (cArray == null) {
                    throw new IllegalArgumentException("collected types cannot be null");
                }

                Map<Class<?>, List<?>> collectedBeans = new HashMap<Class<?>, List<?>>();
                for (int i = 0; i < cArray.length; i++) {
                    List<Object> l = getAutoRegisteredBeansOfType(cArray[i]);
                    logCollectedBeanInsertion(beanName, cArray[i].getName(), l);
                    collectedBeans.put(cArray[i], l);
                }
                bc.setCollectedBeansMap(collectedBeans);
            }
            return bean;
        }

        public Object postProcessAfterInitialization(Object bean, String beanName) {
            return bean;
        }
    });

}

From source file:sample.ClientConfig.java

@Bean
BeanPostProcessor gemfireCacheServerReadyBeanPostProcessor(// <5>
        @Value("${spring.session.data.gemfire.port:" + ServerConfig.SERVER_PORT + "}") final int port) {

    return new BeanPostProcessor() {

        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof PoolFactoryBean || bean instanceof Pool) {
                Assert.isTrue(waitForCacheServerToStart(ServerConfig.SERVER_HOSTNAME, port),
                        String.format("GemFire Server failed to start [hostname: %1$s, port: %2$d]",
                                ServerConfig.SERVER_HOSTNAME, port));
            }/*ww w.j  a  v  a  2s .  co m*/

            return bean;
        }

        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof PoolFactoryBean || bean instanceof Pool) {
                try {
                    latch.await(DEFAULT_WAIT_DURATION, TimeUnit.MILLISECONDS);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }

            return bean;
        }
    };
}

From source file:org.springframework.cloud.dataflow.server.config.web.WebConfiguration.java

@Bean
public BeanPostProcessor relProviderOverridingBeanPostProcessor() {
    return new BeanPostProcessor() {
        @Override/*from   w  w w .j a  v a2 s .  c o m*/
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            // Override the RelProvider to DefaultRelProvider
            // Since DataFlow UI expects DefaultRelProvider to be used, override any
            // other instance of
            // DefaultRelProvider (EvoInflectorRelProvider for instance) with the
            // DefaultRelProvider.
            if (beanName != null && beanName.equals(REL_PROVIDER_BEAN_NAME)) {
                return new DefaultRelProvider();
            }
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String s) throws BeansException {
            return bean;
        }
    };
}

From source file:co.paralleluniverse.common.spring.SpringContainerHelper.java

public static ConfigurableApplicationContext createContext(String defaultDomain, Resource xmlResource,
        Object properties, BeanFactoryPostProcessor beanFactoryPostProcessor) {
    LOG.info("JAVA: {} {}, {}", new Object[] { System.getProperty("java.runtime.name"),
            System.getProperty("java.runtime.version"), System.getProperty("java.vendor") });
    LOG.info("OS: {} {}, {}", new Object[] { System.getProperty("os.name"), System.getProperty("os.version"),
            System.getProperty("os.arch") });
    LOG.info("DIR: {}", System.getProperty("user.dir"));

    final DefaultListableBeanFactory beanFactory = createBeanFactory();
    final GenericApplicationContext context = new GenericApplicationContext(beanFactory);
    context.registerShutdownHook();//from w  ww . j a  va 2  s.  c  o  m

    final PropertyPlaceholderConfigurer propertyPlaceholderConfigurer = new PropertyPlaceholderConfigurer();
    propertyPlaceholderConfigurer
            .setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE);

    if (properties != null) {
        if (properties instanceof Resource)
            propertyPlaceholderConfigurer.setLocation((Resource) properties);
        else if (properties instanceof Properties)
            propertyPlaceholderConfigurer.setProperties((Properties) properties);
        else
            throw new IllegalArgumentException(
                    "Properties argument - " + properties + " - is of an unhandled type");
    }
    context.addBeanFactoryPostProcessor(propertyPlaceholderConfigurer);

    // MBean exporter
    //final MBeanExporter mbeanExporter = new AnnotationMBeanExporter();
    //mbeanExporter.setServer(ManagementFactory.getPlatformMBeanServer());
    //beanFactory.registerSingleton("mbeanExporter", mbeanExporter);
    context.registerBeanDefinition("mbeanExporter", getMBeanExporterBeanDefinition(defaultDomain));

    // inject bean names into components
    context.addBeanFactoryPostProcessor(new BeanFactoryPostProcessor() {
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
            for (String beanName : beanFactory.getBeanDefinitionNames()) {
                try {
                    final BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
                    if (beanDefinition.getBeanClassName() != null) { // van be null for factory methods
                        final Class<?> beanClass = Class.forName(beanDefinition.getBeanClassName());
                        if (Component.class.isAssignableFrom(beanClass))
                            beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(0, beanName);
                    }
                } catch (Exception ex) {
                    LOG.error("Error loading bean " + beanName + " definition.", ex);
                    throw new Error(ex);
                }
            }
        }
    });

    if (beanFactoryPostProcessor != null)
        context.addBeanFactoryPostProcessor(beanFactoryPostProcessor);

    beanFactory.registerCustomEditor(org.w3c.dom.Element.class,
            co.paralleluniverse.common.util.DOMElementProprtyEditor.class);

    final Map<String, Object> beans = new HashMap<String, Object>();

    beanFactory.addBeanPostProcessor(new BeanPostProcessor() {
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            LOG.info("Loading bean {} [{}]", beanName, bean.getClass().getName());
            beans.put(beanName, bean);

            if (bean instanceof Service) {
                final BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
                Collection<String> dependencies = getBeanDependencies(beanDefinition);

                for (String dependeeName : dependencies) {
                    Object dependee = beanFactory.getBean(dependeeName);
                    if (dependee instanceof Service) {
                        ((Service) dependee).addDependedBy((Service) bean);
                        ((Service) bean).addDependsOn((Service) dependee);
                    }
                }
            }
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            LOG.info("Bean {} [{}] loaded", beanName, bean.getClass().getName());
            return bean;
        }
    });

    final XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader((BeanDefinitionRegistry) beanFactory);
    xmlReader.loadBeanDefinitions(xmlResource);

    // start container
    context.refresh();

    // Call .postInit() on all Components
    // There's probably a better way to do this
    try {
        for (Map.Entry<String, Object> entry : beans.entrySet()) {
            final String beanName = entry.getKey();
            final Object bean = entry.getValue();
            if (bean instanceof Component) {
                LOG.info("Performing post-initialization on bean {} [{}]", beanName, bean.getClass().getName());
                ((Component) bean).postInit();
            }
        }
    } catch (Exception e) {
        throw Throwables.propagate(e);
    }

    return context;
}

From source file:sample.client.Application.java

@Bean
BeanPostProcessor gemfireCacheServerAvailabilityBeanPostProcessor(
        @Value("${gemfire.cache.server.host:localhost}") final String host,
        @Value("${gemfire.cache.server.port:12480}") final int port) { // <5>

    return new BeanPostProcessor() {

        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof PoolFactoryBean || bean instanceof Pool) {
                if (!waitForCacheServerToStart(host, port)) {
                    Application.this.logger.warn("No GemFire Cache Server found on [host: {}, port: {}]", host,
                            port);/*w ww  . ja v a2 s.  co  m*/
                }
            }

            return bean;
        }

        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof PoolFactoryBean || bean instanceof Pool) {
                try {
                    Assert.state(latch.await(DEFAULT_WAIT_DURATION, TimeUnit.MILLISECONDS), String.format(
                            "GemFire Cache Server failed to start on [host: %1$s, port: %2$d]", host, port));
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }

            return bean;
        }
    };
}