org.springframework.beans.factory.config.BeanDefinition类的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(15.6k)|赞(0)|评价(0)|浏览(160)

本文整理了Java中org.springframework.beans.factory.config.BeanDefinition类的一些代码示例,展示了BeanDefinition类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BeanDefinition类的具体详情如下:
包路径:org.springframework.beans.factory.config.BeanDefinition
类名称:BeanDefinition

BeanDefinition介绍

[英]A BeanDefinition describes a bean instance, which has property values, constructor argument values, and further information supplied by concrete implementations.

This is just a minimal interface: The main intention is to allow a BeanFactoryPostProcessor such as PropertyPlaceholderConfigurerto introspect and modify property values and other bean metadata.
[中]

代码示例

代码示例来源:origin: elasticjob/elastic-job-lite

@Override
  protected BeanDefinition getJobTypeConfigurationBeanDefinition(final ParserContext parserContext, final BeanDefinition jobCoreConfigurationBeanDefinition, final Element element) {
    BeanDefinitionBuilder result = BeanDefinitionBuilder.rootBeanDefinition(SimpleJobConfiguration.class);
    result.addConstructorArgValue(jobCoreConfigurationBeanDefinition);
    if (Strings.isNullOrEmpty(element.getAttribute(BaseJobBeanDefinitionParserTag.CLASS_ATTRIBUTE))) {
      result.addConstructorArgValue(parserContext.getRegistry().getBeanDefinition(element.getAttribute(BaseJobBeanDefinitionParserTag.JOB_REF_ATTRIBUTE)).getBeanClassName());
    } else {
      result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.CLASS_ATTRIBUTE));
    }
    return result.getBeanDefinition();
  }
}

代码示例来源:origin: spring-projects/spring-framework

static BeanDefinition parseKeyGenerator(Element element, BeanDefinition def) {
  String name = element.getAttribute("key-generator");
  if (StringUtils.hasText(name)) {
    def.getPropertyValues().add("keyGenerator", new RuntimeBeanReference(name.trim()));
  }
  return def;
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Return if there are constructor argument values defined for this bean.
 * @since 5.0.2
 */
default boolean hasConstructorArgumentValues() {
  return !getConstructorArgumentValues().isEmpty();
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Apply the given property value to the corresponding bean.
 */
protected void applyPropertyValue(
    ConfigurableListableBeanFactory factory, String beanName, String property, String value) {
  BeanDefinition bd = factory.getBeanDefinition(beanName);
  BeanDefinition bdToUse = bd;
  while (bd != null) {
    bdToUse = bd;
    bd = bd.getOriginatingBeanDefinition();
  }
  PropertyValue pv = new PropertyValue(property, value);
  pv.setOptional(this.ignoreInvalidKeys);
  bdToUse.getPropertyValues().addPropertyValue(pv);
}

代码示例来源:origin: spring-projects/spring-framework

protected void visitScope(BeanDefinition beanDefinition) {
  String scope = beanDefinition.getScope();
  if (scope != null) {
    String resolvedScope = resolveStringValue(scope);
    if (!scope.equals(resolvedScope)) {
      beanDefinition.setScope(resolvedScope);
    }
  }
}

代码示例来源:origin: spring-projects/spring-framework

protected void visitBeanClassName(BeanDefinition beanDefinition) {
  String beanClassName = beanDefinition.getBeanClassName();
  if (beanClassName != null) {
    String resolvedName = resolveStringValue(beanClassName);
    if (!beanClassName.equals(resolvedName)) {
      beanDefinition.setBeanClassName(resolvedName);
    }
  }
}

代码示例来源:origin: spring-projects/spring-framework

public BeanDefinition parse(Element element, ParserContext context) {
  Object source = context.extractSource(element);
  context.pushContainingComponent(new CompositeComponentDefinition(element.getTagName(), source));
  resolvers.setSource(context.extractSource(element));
  String[] names = new String[] {
      "jsp", "tiles", "bean-name", "freemarker", "groovy", "script-template", "bean", "ref"};
    String name = resolverElement.getLocalName();
    if ("bean".equals(name) || "ref".equals(name)) {
      resolvers.add(context.getDelegate().parsePropertySubElement(resolverElement, null));
      resolverBeanDef.getPropertyValues().add("suffix", ".ftl");
      addUrlBasedViewResolverProperties(resolverElement, resolverBeanDef);
    beanDef.getPropertyValues().add("viewResolvers", resolvers);
    ManagedList<Object> list = new ManagedList<>(1);
    list.add(beanDef);
  if (element.hasAttribute("order")) {
    compositeResolverBeanDef.getPropertyValues().add("order", element.getAttribute("order"));
  context.getReaderContext().getRegistry().registerBeanDefinition(beanName, compositeResolverBeanDef);
  context.registerComponent(new BeanComponentDefinition(compositeResolverBeanDef, beanName));
  context.popAndRegisterContainingComponent();

代码示例来源:origin: apache/incubator-dubbo

private static void parseNested(Element element, ParserContext parserContext, Class<?> beanClass, boolean required, String tag, String property, String ref, BeanDefinition beanDefinition) {
  NodeList nodeList = element.getChildNodes();
  if (nodeList != null && nodeList.getLength() > 0) {
    boolean first = true;
    for (int i = 0; i < nodeList.getLength(); i++) {
      Node node = nodeList.item(i);
      if (node instanceof Element) {
        if (tag.equals(node.getNodeName())
            || tag.equals(node.getLocalName())) {
          if (first) {
            first = false;
            String isDefault = element.getAttribute("default");
            if (StringUtils.isEmpty(isDefault)) {
              beanDefinition.getPropertyValues().addPropertyValue("default", "false");
            }
          }
          BeanDefinition subDefinition = parse((Element) node, parserContext, beanClass, required);
          if (subDefinition != null && ref != null && ref.length() > 0) {
            subDefinition.getPropertyValues().addPropertyValue(property, new RuntimeBeanReference(ref));
          }
        }
      }
    }
  }
}

代码示例来源:origin: spring-projects/spring-framework

private void addIncludePatterns(Element element, ParserContext parserContext, BeanDefinition beanDef) {
  ManagedList<TypedStringValue> includePatterns = new ManagedList<>();
  NodeList childNodes = element.getChildNodes();
  for (int i = 0; i < childNodes.getLength(); i++) {
    Node node = childNodes.item(i);
    if (node instanceof Element) {
      Element includeElement = (Element) node;
      TypedStringValue valueHolder = new TypedStringValue(includeElement.getAttribute("name"));
      valueHolder.setSource(parserContext.extractSource(includeElement));
      includePatterns.add(valueHolder);
    }
  }
  if (!includePatterns.isEmpty()) {
    includePatterns.setSource(parserContext.extractSource(element));
    beanDef.getPropertyValues().add("includePatterns", includePatterns);
  }
}

代码示例来源:origin: spring-projects/spring-framework

listenerDef.setSource(parserContext.extractSource(listenerEle));
listenerDef.setBeanClassName("org.springframework.jms.listener.adapter.MessageListenerAdapter");
String ref = listenerEle.getAttribute(REF_ATTRIBUTE);
if (!StringUtils.hasText(ref)) {
  parserContext.getReaderContext().error(
      "Listener 'ref' attribute contains empty value.", listenerEle);
  listenerDef.getPropertyValues().add("delegate", new RuntimeBeanReference(ref));
  listenerDef.getPropertyValues().add("defaultListenerMethod", method);
PropertyValue messageConverterPv = commonContainerProperties.getPropertyValue("messageConverter");
if (messageConverterPv != null) {
  listenerDef.getPropertyValues().addPropertyValue(messageConverterPv);
containerDef.getPropertyValues().add("messageListener", listenerDef);
if (listenerEle.hasAttribute(RESPONSE_DESTINATION_ATTRIBUTE)) {
  listenerDef.getPropertyValues().add(
      pubSubDomain ? "defaultResponseTopicName" : "defaultResponseQueueName", responseDestination);
  PropertyValue destinationResolver = containerDef.getPropertyValues().getPropertyValue("destinationResolver");
  if (destinationResolver != null) {
    listenerDef.getPropertyValues().addPropertyValue(destinationResolver);

代码示例来源:origin: spring-projects/spring-framework

@Override
@SuppressWarnings("unchecked")
public BeanDefinition parse(Element element, ParserContext parserContext) {
  Object source = parserContext.extractSource(element);
  if (element.hasAttribute("status-code")) {
    int statusValue = Integer.parseInt(element.getAttribute("status-code"));
    statusCode = HttpStatus.valueOf(statusValue);
  String name = element.getLocalName();
  if (name.equals("view-controller")) {
    if (element.hasAttribute("view-name")) {
      controller.getPropertyValues().add("viewName", element.getAttribute("view-name"));
      controller.getPropertyValues().add("statusCode", statusCode);
    controller.getPropertyValues().add("view", getRedirectView(element, statusCode, source));
  Map<String, BeanDefinition> urlMap = (Map<String, BeanDefinition>) hm.getPropertyValues().get("urlMap");
  if (urlMap == null) {
    urlMap = new ManagedMap<>();
    hm.getPropertyValues().add("urlMap", urlMap);
  urlMap.put(element.getAttribute("path"), controller);

代码示例来源:origin: spring-projects/spring-security

private void createX509Provider() {
  Element x509Elt = DomUtils.getChildElementByTagName(httpElt, Elements.X509);
  BeanDefinition provider = new RootBeanDefinition(
      PreAuthenticatedAuthenticationProvider.class);
  RootBeanDefinition uds = new RootBeanDefinition();
  uds.setFactoryBeanName(BeanIds.USER_DETAILS_SERVICE_FACTORY);
  uds.setFactoryMethodName("authenticationUserDetailsService");
  uds.getConstructorArgumentValues().addGenericArgumentValue(
      x509Elt.getAttribute(ATT_USER_SERVICE_REF));
  provider.getPropertyValues().addPropertyValue(
      "preAuthenticatedUserDetailsService", uds);
  x509ProviderRef = new RuntimeBeanReference(pc.getReaderContext()
      .registerWithGeneratedName(provider));
}

代码示例来源:origin: spring-projects/spring-security

public BeanDefinition parse(Element element, ParserContext pc) {
    String ref = element.getAttribute("ref");

    if (!StringUtils.hasText(ref)) {
      pc.getReaderContext().error("ref attribute is required",
          pc.extractSource(element));
    }

    // Ensure the FCP is registered.
    HttpSecurityBeanDefinitionParser.registerFilterChainProxyIfNecessary(pc,
        pc.extractSource(element));
    BeanDefinition filterChainProxy = pc.getRegistry().getBeanDefinition(
        BeanIds.FILTER_CHAIN_PROXY);
    filterChainProxy.getPropertyValues().addPropertyValue("firewall",
        new RuntimeBeanReference(ref));

    return null;
  }
}

代码示例来源:origin: spring-projects/spring-security

private String resolveId(Element element, AbstractBeanDefinition definition,
      ParserContext pc) throws BeanDefinitionStoreException {

    String id = element.getAttribute("id");

    if (pc.isNested()) {
      // We're inside an <authentication-provider> element
      if (!StringUtils.hasText(id)) {
        id = pc.getReaderContext().generateBeanName(definition);
      }
      BeanDefinition container = pc.getContainingBeanDefinition();
      container.getPropertyValues().add("userDetailsService",
          new RuntimeBeanReference(id));
    }

    if (StringUtils.hasText(id)) {
      return id;
    }

    // If top level, use the default name or throw an exception if already used
    if (pc.getRegistry().containsBeanDefinition(BeanIds.USER_DETAILS_SERVICE)) {
      throw new BeanDefinitionStoreException("No id supplied and another "
          + "bean is already registered as " + BeanIds.USER_DETAILS_SERVICE);
    }

    return BeanIds.USER_DETAILS_SERVICE;
  }
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
  BeanDefinition bd =
      LangNamespaceUtils.registerScriptFactoryPostProcessorIfNecessary(parserContext.getRegistry());
  String refreshCheckDelay = element.getAttribute(REFRESH_CHECK_DELAY_ATTRIBUTE);
  if (StringUtils.hasText(refreshCheckDelay)) {
    bd.getPropertyValues().add("defaultRefreshCheckDelay", Long.valueOf(refreshCheckDelay));
  }
  String proxyTargetClass = element.getAttribute(PROXY_TARGET_CLASS_ATTRIBUTE);
  if (StringUtils.hasText(proxyTargetClass)) {
    bd.getPropertyValues().add("defaultProxyTargetClass", new TypedStringValue(proxyTargetClass, Boolean.class));
  }
  return null;
}

代码示例来源:origin: spring-projects/spring-framework

@Override
  public BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext) {
    Element element = (Element) node;
    BeanDefinition def = definition.getBeanDefinition();
    MutablePropertyValues mpvs = (def.getPropertyValues() == null) ? new MutablePropertyValues() : def.getPropertyValues();
    mpvs.add("name", element.getAttribute("name"));
    mpvs.add("age", element.getAttribute("age"));
    ((AbstractBeanDefinition) def).setPropertyValues(mpvs);
    return definition;
  }
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Parse a property element.
 */
public void parsePropertyElement(Element ele, BeanDefinition bd) {
  String propertyName = ele.getAttribute(NAME_ATTRIBUTE);
  if (!StringUtils.hasLength(propertyName)) {
    error("Tag 'property' must have a 'name' attribute", ele);
    return;
  }
  this.parseState.push(new PropertyEntry(propertyName));
  try {
    if (bd.getPropertyValues().contains(propertyName)) {
      error("Multiple 'property' definitions for property '" + propertyName + "'", ele);
      return;
    }
    Object val = parsePropertyValue(ele, bd, propertyName);
    PropertyValue pv = new PropertyValue(propertyName, val);
    parseMetaElements(ele, pv);
    pv.setSource(extractSource(ele));
    bd.getPropertyValues().addPropertyValue(pv);
  }
  finally {
    this.parseState.pop();
  }
}

代码示例来源:origin: liuyangming/ByteTCC

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
  String[] beanNameArray = beanFactory.getBeanDefinitionNames();
  for (int i = 0; i < beanNameArray.length; i++) {
    BeanDefinition beanDef = beanFactory.getBeanDefinition(beanNameArray[i]);
    String beanClassName = beanDef.getBeanClassName();
    if (FEIGN_FACTORY_CLASS.equals(beanClassName) == false) {
      continue;
    }
    MutablePropertyValues mpv = beanDef.getPropertyValues();
    PropertyValue pv = mpv.getPropertyValue("name");
    String client = String.valueOf(pv.getValue() == null ? "" : pv.getValue());
    if (StringUtils.isNotBlank(client)) {
      this.transientClientSet.add(client);
    }
  }
  this.fireAfterPropertiesSet();
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Registers a {@code Map<String, CorsConfiguration>} (mapped {@code CorsConfiguration}s)
 * under a well-known name unless already registered. The bean definition may be updated
 * if a non-null CORS configuration is provided.
 * @return a RuntimeBeanReference to this {@code Map<String, CorsConfiguration>} instance
 */
public static RuntimeBeanReference registerCorsConfigurations(
    @Nullable Map<String, CorsConfiguration> corsConfigurations,
    ParserContext context, @Nullable Object source) {
  if (!context.getRegistry().containsBeanDefinition(CORS_CONFIGURATION_BEAN_NAME)) {
    RootBeanDefinition corsDef = new RootBeanDefinition(LinkedHashMap.class);
    corsDef.setSource(source);
    corsDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    if (corsConfigurations != null) {
      corsDef.getConstructorArgumentValues().addIndexedArgumentValue(0, corsConfigurations);
    }
    context.getReaderContext().getRegistry().registerBeanDefinition(CORS_CONFIGURATION_BEAN_NAME, corsDef);
    context.registerComponent(new BeanComponentDefinition(corsDef, CORS_CONFIGURATION_BEAN_NAME));
  }
  else if (corsConfigurations != null) {
    BeanDefinition corsDef = context.getRegistry().getBeanDefinition(CORS_CONFIGURATION_BEAN_NAME);
    corsDef.getConstructorArgumentValues().addIndexedArgumentValue(0, corsConfigurations);
  }
  return new RuntimeBeanReference(CORS_CONFIGURATION_BEAN_NAME);
}

代码示例来源:origin: spring-projects/spring-framework

@Nullable
private static BeanDefinition registerOrEscalateApcAsRequired(
    Class<?> cls, BeanDefinitionRegistry registry, @Nullable Object source) {
  Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
  if (registry.containsBeanDefinition(AUTO_PROXY_CREATOR_BEAN_NAME)) {
    BeanDefinition apcDefinition = registry.getBeanDefinition(AUTO_PROXY_CREATOR_BEAN_NAME);
    if (!cls.getName().equals(apcDefinition.getBeanClassName())) {
      int currentPriority = findPriorityForClass(apcDefinition.getBeanClassName());
      int requiredPriority = findPriorityForClass(cls);
      if (currentPriority < requiredPriority) {
        apcDefinition.setBeanClassName(cls.getName());
      }
    }
    return null;
  }
  RootBeanDefinition beanDefinition = new RootBeanDefinition(cls);
  beanDefinition.setSource(source);
  beanDefinition.getPropertyValues().add("order", Ordered.HIGHEST_PRECEDENCE);
  beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
  registry.registerBeanDefinition(AUTO_PROXY_CREATOR_BEAN_NAME, beanDefinition);
  return beanDefinition;
}

相关文章

微信公众号

最新文章

更多