List of usage examples for org.springframework.beans.factory.support BeanDefinitionBuilder rootBeanDefinition
public static BeanDefinitionBuilder rootBeanDefinition(Class<?> beanClass)
From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java
@Test public void testContainsBeanReturnsTrueEvenForAbstractBeanDefinition() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); bf.registerBeanDefinition("abs", BeanDefinitionBuilder.rootBeanDefinition(TestBean.class).setAbstract(true).getBeanDefinition()); assertThat(bf.containsBean("abs"), equalTo(true)); assertThat(bf.containsBean("bogus"), equalTo(false)); }
From source file:org.springframework.data.elasticsearch.config.TransportClientBeanDefinitionParser.java
@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class); setConfigurations(element, builder); return getSourcedBeanDefinition(builder, element, parserContext); }
From source file:org.springframework.data.gemfire.function.config.AbstractFunctionExecutionBeanDefinitionBuilder.java
/** * Build the bean definition/* w ww . j av a 2 s.c o m*/ * @param registry * @return */ BeanDefinition build(BeanDefinitionRegistry registry) { BeanDefinitionBuilder builder = BeanDefinitionBuilder .rootBeanDefinition(getFunctionProxyFactoryBeanClass()); builder.addConstructorArgValue(configuration.getFunctionExecutionInterface()); BeanDefinitionBuilder functionTemplateBuilder = getGemfireOperationsBeanDefinitionBuilder(registry); functionTemplateBuilder.setLazyInit(true); String resultCollectorRef = (String) configuration.getAttribute("resultCollector"); if (StringUtils.hasText(resultCollectorRef)) { functionTemplateBuilder.addPropertyReference("resultCollector", resultCollectorRef); } AbstractBeanDefinition functionTemplate = functionTemplateBuilder.getBeanDefinition(); String functionTemplateName = BeanDefinitionReaderUtils.registerWithGeneratedName(functionTemplate, registry); builder.addConstructorArgReference(functionTemplateName); return builder.getBeanDefinition(); }
From source file:org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.java
/** * Registers a generic repository factory bean for a bean with the given name and the provided configuration context. * //from w w w.ja v a 2s .c o m * @param parser * @param name * @param context */ private void registerGenericRepositoryFactoryBean(ParserContext parser, T context) { try { Object beanSource = parser.extractSource(context.getSource()); BeanDefinitionBuilder builder = BeanDefinitionBuilder .rootBeanDefinition(context.getRepositoryFactoryBeanClassName()); builder.addPropertyValue("repositoryInterface", context.getInterfaceName()); builder.addPropertyValue("queryLookupStrategyKey", context.getQueryLookupStrategyKey()); builder.addPropertyValue("namedQueries", new NamedQueriesBeanDefinitionParser(context.getNamedQueriesLocation()) .parse(context.getSource(), parser)); String customImplementationBeanName = registerCustomImplementation(context, parser, beanSource); if (customImplementationBeanName != null) { builder.addPropertyReference("customImplementation", customImplementationBeanName); } postProcessBeanDefinition(context, builder, parser.getRegistry(), beanSource); AbstractBeanDefinition beanDefinition = builder.getBeanDefinition(); beanDefinition.setSource(beanSource); if (LOG.isDebugEnabled()) { LOG.debug("Registering repository: " + context.getBeanId() + " - Interface: " + context.getInterfaceName() + " - Factory: " + context.getRepositoryFactoryBeanClassName() + ", - Custom implementation: " + customImplementationBeanName); } BeanComponentDefinition definition = new BeanComponentDefinition(beanDefinition, context.getBeanId()); parser.registerBeanComponent(definition); } catch (RuntimeException e) { handleError(e, context.getSource(), parser.getReaderContext()); } }
From source file:org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.java
/** * Callback to register additional bean definitions for a {@literal repositories} root node. This usually includes * beans you have to set up once independently of the number of repositories to be created. Will be called before any * repositories bean definitions have been registered. * /*from ww w.j av a2 s .co m*/ * @param registry * @param source */ protected void registerBeansForRoot(BeanDefinitionRegistry registry, Object source) { AbstractBeanDefinition definition = BeanDefinitionBuilder .rootBeanDefinition(REPOSITORY_INTERFACE_POST_PROCESSOR).getBeanDefinition(); registerWithSourceAndGeneratedBeanName(registry, definition, source); }
From source file:org.springframework.data.repository.config.RepositoryBeanDefinitionBuilder.java
/** * Builds a new {@link BeanDefinitionBuilder} from the given {@link BeanDefinitionRegistry} and {@link ResourceLoader} * ./*from w w w . j av a 2 s . co m*/ * * @param registry must not be {@literal null}. * @param resourceLoader must not be {@literal null}. * @return */ public BeanDefinitionBuilder build(BeanDefinitionRegistry registry, ResourceLoader resourceLoader) { Assert.notNull(registry, "BeanDefinitionRegistry must not be null!"); Assert.notNull(resourceLoader, "ResourceLoader must not be null!"); String factoryBeanName = configuration.getRepositoryFactoryBeanName(); factoryBeanName = StringUtils.hasText(factoryBeanName) ? factoryBeanName : extension.getRepositoryFactoryClassName(); BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(factoryBeanName); builder.addPropertyValue("repositoryInterface", configuration.getRepositoryInterface()); builder.addPropertyValue("queryLookupStrategyKey", configuration.getQueryLookupStrategyKey()); NamedQueriesBeanDefinitionBuilder definitionBuilder = new NamedQueriesBeanDefinitionBuilder( extension.getDefaultNamedQueryLocation()); if (StringUtils.hasText(configuration.getNamedQueriesLocation())) { definitionBuilder.setLocations(configuration.getNamedQueriesLocation()); } builder.addPropertyValue("namedQueries", definitionBuilder.build(configuration.getSource())); String customImplementationBeanName = registerCustomImplementation(registry, resourceLoader); if (customImplementationBeanName != null) { builder.addPropertyReference("customImplementation", customImplementationBeanName); builder.addDependsOn(customImplementationBeanName); } return builder; }
From source file:org.springframework.flex.config.HibernateSerializationConfigPostProcessor.java
@SuppressWarnings("unchecked") public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { if (isHibernateDetected(beanFactory.getBeanClassLoader())) { //Make sure there is a MessageBrokerFactoryBean present BeanDefinition messageBrokerBeanDef = findMessageBrokerFactoryBeanDefinition(beanFactory); Assert.notNull(/*from ww w. j a v a 2 s . c om*/ "Could not find an appropriate bean definition for MessageBrokerBeanDefinitionFactoryBean."); MutablePropertyValues brokerProps = messageBrokerBeanDef.getPropertyValues(); ManagedSet<RuntimeBeanReference> configProcessors; if (brokerProps.getPropertyValue(CONFIG_PROCESSORS_PROPERTY) != null) { configProcessors = (ManagedSet<RuntimeBeanReference>) brokerProps .getPropertyValue(CONFIG_PROCESSORS_PROPERTY).getValue(); } else { configProcessors = new ManagedSet<RuntimeBeanReference>(); } //Abort if HibernateConfigProcessor is already present if (isAmfConversionServiceProcessorConfigured(beanFactory, configProcessors)) { return; } if (!ClassUtils.isAssignableValue(BeanDefinitionRegistry.class, beanFactory)) { if (log.isWarnEnabled()) { log.warn( "Hibernate AMF serialization support could not be auto-configured because the current BeanFactory does not implement " + "BeanDefinitionRegistry. In order for this support to be enabled, you must manually configure an instance of " + HIBERNATE_CONFIG_PROCESSOR_CLASS); } } BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; //Add the appropriate HibernateConfigProcessor bean definition BeanDefinitionBuilder processorBuilder; if (isJpaDetected(beanFactory.getBeanClassLoader())) { processorBuilder = BeanDefinitionBuilder.rootBeanDefinition(JPA_HIBERNATE_CONFIG_PROCESSOR_CLASS); } else { processorBuilder = BeanDefinitionBuilder.rootBeanDefinition(HIBERNATE_CONFIG_PROCESSOR_CLASS); } String processorId = BeanDefinitionReaderUtils .registerWithGeneratedName(processorBuilder.getBeanDefinition(), registry); configProcessors.add(new RuntimeBeanReference(processorId)); } }
From source file:org.springframework.flex.config.RemotingAnnotationPostProcessor.java
/** * //ww w.j a va2s. c o m * {@inheritDoc} */ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { Set<RemotingDestinationMetadata> remoteBeans = findRemotingDestinations(beanFactory); if (remoteBeans.size() > 0) { Assert.isInstanceOf(BeanDefinitionRegistry.class, beanFactory, "In order for services to be exported via the @RemotingDestination annotation, the current BeanFactory must be a BeanDefinitionRegistry."); } BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; for (RemotingDestinationMetadata remotingDestinationConfig : remoteBeans) { BeanDefinitionBuilder exporterBuilder = BeanDefinitionBuilder .rootBeanDefinition(RemotingDestinationExporter.class); exporterBuilder.getRawBeanDefinition().setRole(BeanDefinition.ROLE_INFRASTRUCTURE); RemotingDestination remotingDestination = remotingDestinationConfig.getRemotingDestination(); String messageBrokerId = StringUtils.hasText(remotingDestination.messageBroker()) ? remotingDestination.messageBroker() : BeanIds.MESSAGE_BROKER; String destinationId = StringUtils.hasText(remotingDestination.value()) ? remotingDestination.value() : remotingDestinationConfig.getBeanName(); String[] channels = null; for (String channelValue : remotingDestination.channels()) { channelValue = beanFactory.resolveEmbeddedValue(channelValue); String[] parsedChannels = StringUtils .trimArrayElements(StringUtils.commaDelimitedListToStringArray(channelValue)); channels = StringUtils.mergeStringArrays(channels, parsedChannels); } exporterBuilder.addPropertyReference(MESSAGE_BROKER_PROPERTY, messageBrokerId); exporterBuilder.addPropertyValue(SERVICE_PROPERTY, remotingDestinationConfig.getBeanName()); exporterBuilder.addDependsOn(remotingDestinationConfig.getBeanName()); exporterBuilder.addPropertyValue(DESTINATION_ID_PROPERTY, destinationId); exporterBuilder.addPropertyValue(CHANNELS_PROPERTY, channels); exporterBuilder.addPropertyValue(INCLUDE_METHODS_PROPERTY, remotingDestinationConfig.getIncludeMethods()); exporterBuilder.addPropertyValue(EXCLUDE_METHODS_PROPERTY, remotingDestinationConfig.getExcludeMethods()); exporterBuilder.addPropertyValue(SERVICE_ADAPTER_PROPERTY, remotingDestination.serviceAdapter()); BeanDefinitionReaderUtils.registerWithGeneratedName(exporterBuilder.getBeanDefinition(), registry); } }
From source file:org.springframework.integration.context.ConversionServiceCreator.java
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { if (!beanFactory.containsBean(IntegrationContextUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME)) { if (beanFactory instanceof BeanDefinitionRegistry) { BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder .rootBeanDefinition(CustomConversionServiceFactoryBean.class); BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder( conversionServiceBuilder.getBeanDefinition(), IntegrationContextUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(beanDefinitionHolder, (BeanDefinitionRegistry) beanFactory); } else if (logger.isWarnEnabled()) { logger.warn(//from w ww . j a va2s. c om "BeanFactory is not a BeanDefinitionRegistry implementation. Cannot register a default ConversionService."); } } }
From source file:org.springframework.ldap.config.ContextSourceParser.java
@Override public BeanDefinition parse(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(LdapContextSource.class); String username = element.getAttribute(ATT_USERNAME); String password = element.getAttribute(ATT_PASSWORD); String url = element.getAttribute(ATT_URL); Assert.hasText(url, "url attribute must be specified"); builder.addPropertyValue("userDn", username); builder.addPropertyValue("password", password); BeanDefinitionBuilder urlsBuilder = BeanDefinitionBuilder.rootBeanDefinition(UrlsFactory.class) .setFactoryMethod("urls").addConstructorArgValue(url); builder.addPropertyValue("urls", urlsBuilder.getBeanDefinition()); builder.addPropertyValue("base", getString(element, ATT_BASE, "")); builder.addPropertyValue("referral", getString(element, ATT_REFERRAL, null)); boolean anonymousReadOnly = getBoolean(element, ATT_ANONYMOUS_READ_ONLY, false); builder.addPropertyValue("anonymousReadOnly", anonymousReadOnly); boolean nativePooling = getBoolean(element, ATT_NATIVE_POOLING, false); builder.addPropertyValue("pooled", nativePooling); String authStrategyRef = element.getAttribute(ATT_AUTHENTICATION_STRATEGY_REF); if (StringUtils.hasText(authStrategyRef)) { builder.addPropertyReference("authenticationStrategy", authStrategyRef); }/*w w w . j a v a 2s .c o m*/ String authSourceRef = element.getAttribute(ATT_AUTHENTICATION_SOURCE_REF); if (StringUtils.hasText(authSourceRef)) { builder.addPropertyReference("authenticationSource", authSourceRef); } else { Assert.hasText(username, "username attribute must be specified unless an authentication-source-ref explicitly configured"); Assert.hasText(password, "password attribute must be specified unless an authentication-source-ref explicitly configured"); } String baseEnvPropsRef = element.getAttribute(ATT_BASE_ENV_PROPS_REF); if (StringUtils.hasText(baseEnvPropsRef)) { builder.addPropertyReference("baseEnvironmentProperties", baseEnvPropsRef); } BeanDefinition targetContextSourceDefinition = builder.getBeanDefinition(); targetContextSourceDefinition = applyPoolingIfApplicable(targetContextSourceDefinition, element, nativePooling); BeanDefinition actualContextSourceDefinition = targetContextSourceDefinition; if (!anonymousReadOnly) { BeanDefinitionBuilder proxyBuilder = BeanDefinitionBuilder .rootBeanDefinition(TransactionAwareContextSourceProxy.class); proxyBuilder.addConstructorArgValue(targetContextSourceDefinition); actualContextSourceDefinition = proxyBuilder.getBeanDefinition(); } String id = getString(element, AbstractBeanDefinitionParser.ID_ATTRIBUTE, DEFAULT_ID); parserContext.registerBeanComponent(new BeanComponentDefinition(actualContextSourceDefinition, id)); return actualContextSourceDefinition; }