List of usage examples for org.springframework.beans.factory.support DefaultListableBeanFactory setAutowireCandidateResolver
public void setAutowireCandidateResolver(final AutowireCandidateResolver autowireCandidateResolver)
From source file:ch.nydi.spring.context.support.TestGenericXmlContextLoader.java
/** * {@inheritDoc}//ww w. j av a2 s .c o m */ @Override public final ConfigurableApplicationContext loadContext(final String... locations) throws Exception { final DefaultListableBeanFactory beanFactory = new PrimaryResolverListableBeanFactory(); beanFactory.setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer()); beanFactory.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); final GenericApplicationContext context = new GenericApplicationContext(beanFactory); createBeanDefinitionReader(context).loadBeanDefinitions(locations); AnnotationConfigUtils.registerAnnotationConfigProcessors(context); context.refresh(); context.registerShutdownHook(); return context; }
From source file:org.constretto.spring.EnvironmentAnnotationConfigurer.java
@SuppressWarnings("unchecked") public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { if (!(configurableListableBeanFactory instanceof DefaultListableBeanFactory)) { throw new IllegalStateException( "EnvironmentAnnotationConfigurer needs to operate on a DefaultListableBeanFactory"); }//from w w w .j a v a2s.co m DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableListableBeanFactory; defaultListableBeanFactory.setAutowireCandidateResolver(new ConstrettoAutowireCandidateResolver()); String[] beanNames = configurableListableBeanFactory.getBeanDefinitionNames(); int lowestDiscoveredPriority = Integer.MAX_VALUE; for (String beanName : beanNames) { BeanDefinition beanDefinition = configurableListableBeanFactory.getBeanDefinition(beanName); if (beanDefinition.getBeanClassName() != null) { try { Class beanClass = Class.forName(beanDefinition.getBeanClassName()); Environment environmentAnnotation = findEnvironmentAnnotation(beanClass); if (environmentAnnotation != null) { if (!assemblyContextResolver.getAssemblyContext().isEmpty()) { boolean autowireCandidate = decideIfAutowireCandiate(beanName, environmentAnnotation); beanDefinition.setAutowireCandidate(autowireCandidate); if (autowireCandidate) { removeNonAnnotatedBeansFromAutowireForType(beanClass, configurableListableBeanFactory); } } else { beanDefinition.setAutowireCandidate(false); } } } catch (ClassNotFoundException e) { beanDefinition.setAutowireCandidate(false); } } } }
From source file:org.exoplatform.container.spring.SpringContainer.java
/** * {@inheritDoc}// w ww . j av a 2 s . c o m */ @Override @SuppressWarnings({ "rawtypes", "unchecked" }) public void start() { ConfigurationManager cm = super.getComponentInstanceOfType(ConfigurationManager.class, false); // We check if the component has been defined in the configuration of the current container // The goal is to enable the SpringContainer only if it is needed Component component = cm.getComponent(ApplicationContextProvider.class); if (component == null) { if (LOG.isDebugEnabled()) { LOG.debug( "No ApplicationContextProvider has been defined, thus the SpringContainer will be disabled." + " To enable the Spring Integration please define an ApplicationContextProvider"); } } else { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); Collection<ComponentAdapter<?>> adapters = delegate.getComponentAdapters(); for (ComponentAdapter<?> adapter : adapters) { Object key = adapter.getComponentKey(); String name = keyToBeanName(key); String factoryName = name + "#factory"; RootBeanDefinition def = new RootBeanDefinition(adapter.getComponentImplementation(), AbstractBeanDefinition.AUTOWIRE_NO, false); def.setScope(BeanDefinition.SCOPE_PROTOTYPE); def.setFactoryBeanName(factoryName); def.setFactoryMethodName("getInstance"); def.setLazyInit(true); def.setTargetType(adapter.getComponentImplementation()); if (key instanceof String) { def.addQualifier(new AutowireCandidateQualifier(Named.class, key)); } else if (key instanceof Class<?> && ((Class<?>) key).isAnnotation()) { def.addQualifier(new AutowireCandidateQualifier((Class<?>) key)); } else { def.setPrimary(true); } bf.registerBeanDefinition(name, def); bf.registerSingleton(factoryName, new ComponentAdapterFactoryBean(adapter)); } GenericApplicationContext parentContext = new GenericApplicationContext(bf); parentContext.refresh(); ApplicationContextProvider provider = super.getComponentInstanceOfType(ApplicationContextProvider.class, false); ctx = provider.getApplicationContext(parentContext); LOG.info("A SpringContainer has been enabled using the ApplicationContextProvider " + provider.getClass()); } super.start(); }
From source file:com.liferay.arkadiko.bean.AKBeanPostProcessor.java
/** * Post process bean factory.//from w w w . jav a2 s.c o m * * @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); } } } }
From source file:org.loginject.SpringLogInjectionService.java
@Override public BeanFactoryPostProcessor getBindings(LogInject<_Logger_> logInject) { return new BeanFactoryPostProcessor() { ThreadLocal<Object> injectee = new ThreadLocal<>(); @Override/*from ww w . j av a 2s .com*/ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; AutowireCandidateResolver resolver = new ContextAnnotationAutowireCandidateResolver() { @Override public Object getSuggestedValue(DependencyDescriptor descriptor) { if (descriptor.getDependencyType().equals(logInject.getLoggerClass())) { return logInject.createLogger(injectee.get().getClass()); } return null; } }; AutowiredAnnotationBeanPostProcessor beanPostProcessor = new AutowiredAnnotationBeanPostProcessor() { @Override public PropertyValues postProcessPropertyValues(PropertyValues values, PropertyDescriptor[] descriptors, Object bean, String beanName) throws BeansException { injectee.set(bean); return super.postProcessPropertyValues(values, descriptors, bean, beanName); } }; beanPostProcessor.setBeanFactory(defaultListableBeanFactory); defaultListableBeanFactory.addBeanPostProcessor(beanPostProcessor); defaultListableBeanFactory.setAutowireCandidateResolver(resolver); } }; }
From source file:org.openvpms.web.component.im.table.IMObjectTableModelFactory.java
/** * Helper to create a new table model./* w w w .j a v a 2 s . c om*/ * * @param handler the archetype handler * @param shortNames the archetype short names. May be {@code null} * @param query the query. May be {@code null} * @param parent the parent object * @param context the layout context * @return a new table model, or {@code null} if there is no valid constructor */ @SuppressWarnings("unchecked") private static <T extends IMObject> IMObjectTableModel<T> construct( ArchetypeHandler<IMObjectTableModel<T>> handler, final String[] shortNames, Query<T> query, final IMObject parent, LayoutContext context) { Class type = handler.getType(); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); // Spring doesn't automatically autowire the shortNames array when it is registered as a singleton, so need to // register the following to handle it explicitly factory.setAutowireCandidateResolver(new SimpleAutowireCandidateResolver() { @Override public Object getSuggestedValue(DependencyDescriptor descriptor) { if (String[].class.equals(descriptor.getDependencyType())) { return shortNames; } return super.getSuggestedValue(descriptor); } }); if (query != null) { factory.registerSingleton("query", query); } if (parent != null) { factory.registerSingleton("parent", parent); } if (context != null) { factory.registerSingleton("context", context); } try { IMObjectTableModel<T> result = (IMObjectTableModel<T>) factory.createBean(type, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, false); handler.initialise(result); return result; } catch (Throwable exception) { log.error(exception, exception); } return null; }
From source file:org.statefulj.framework.core.StatefulFactory.java
public void postProcessBeanFactory(final ConfigurableListableBeanFactory reg) throws BeansException { DefaultListableBeanFactory bf = (DefaultListableBeanFactory) reg; bf.setAutowireCandidateResolver(new FSMAnnotationResolver()); }