org.springframework.beans.factory.config.BeanDefinition.isSingleton()方法的使用及代码示例

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

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

BeanDefinition.isSingleton介绍

[英]Return whether this a Singleton, with a single, shared instance returned on all calls.
[中]返回这是否为单例,所有调用都返回一个共享实例。

代码示例

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

if (bd.isSingleton()) {
  return this.scriptBeanFactory.getBean(scriptedObjectBeanName).getClass();

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

if ("ref".equals(property) && parserContext.getRegistry().containsBeanDefinition(value)) {
  BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);
  if (!refBean.isSingleton()) {
    throw new IllegalStateException("The exported service ref " + value + " must be singleton! Please set the " + value + " bean scope to singleton, eg: <bean id=\"" + value + "\" scope=\"singleton\" ...>");

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

if ("ref".equals(property) && parserContext.getRegistry().containsBeanDefinition(value)) {
  BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);
  if (!refBean.isSingleton()) {
    throw new IllegalStateException("The exported service ref " + value + " must be singleton! Please set the " + value + " bean scope to singleton, eg: <bean id=\"" + value + "\" scope=\"singleton\" ...>");

代码示例来源:origin: AxonFramework/AxonFramework

private void registerEventHandlerRegistrar(String epConfigurationBeanName, String epConfigurerBeanName,
                      BeanDefinitionRegistry registry) {
  List<RuntimeBeanReference> beans = new ManagedList<>();
  beanFactory.getBeanNamesIterator().forEachRemaining(bean -> {
    if (!beanFactory.isFactoryBean(bean)) {
      Class<?> beanType = beanFactory.getType(bean);
      if (beanType != null && beanFactory.containsBeanDefinition(bean) &&
          beanFactory.getBeanDefinition(bean).isSingleton()) {
        boolean hasHandler =
            StreamSupport.stream(methodsOf(beanType).spliterator(), false)
                   .map(m -> findAnnotationAttributes(m, MessageHandler.class).orElse(null))
                   .filter(Objects::nonNull)
                   .anyMatch(attr -> EventMessage.class
                       .isAssignableFrom((Class) attr.get("messageType")));
        if (hasHandler) {
          beans.add(new RuntimeBeanReference(bean));
        }
      }
    }
  });
  registry.registerBeanDefinition("eventHandlerRegistrar", genericBeanDefinition(EventHandlerRegistrar.class)
      .addConstructorArgReference(AXON_CONFIGURATION_BEAN)
      .addConstructorArgReference(epConfigurationBeanName)
      .addConstructorArgReference(epConfigurerBeanName)
      .addPropertyValue("eventHandlers", beans).getBeanDefinition());
}

代码示例来源:origin: weibocom/motan

if (parserContext.getRegistry().containsBeanDefinition(value)) {
  BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);
  if (!refBean.isSingleton()) {
    throw new IllegalStateException("The exported service ref " + value + " must be singleton! Please set the " + value
        + " bean scope to singleton, eg: <bean id=\"" + value + "\" scope=\"singleton\" ...>");

代码示例来源:origin: org.springframework/spring-context

if (bd.isSingleton()) {
  return this.scriptBeanFactory.getBean(scriptedObjectBeanName).getClass();

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

@Test
public void testCustomScopeMetadataResolver() {
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
      "org/springframework/context/annotation/customScopeResolverTests.xml");
  BeanDefinition bd = context.getBeanFactory().getBeanDefinition("fooServiceImpl");
  assertEquals("myCustomScope", bd.getScope());
  assertFalse(bd.isSingleton());
}

代码示例来源:origin: Netflix/genie

.append(beanDefinition.isLazyInit() ? "lazy" : "eager")
.append(beanDefinition.isPrototype() ? ", prototype" : "")
.append(beanDefinition.isSingleton() ? ", singleton" : "")
.toString();

代码示例来源:origin: spockframework/spock

@Override
public void beforeTestMethod(SpringTestContext testContext) throws Exception {
 Object testInstance = testContext.getTestInstance();
 if (!(testInstance instanceof Specification)) return;
 Specification specification = (Specification)testInstance;
 ScanScopedBeans scanScopedBeans = ReflectionUtil.getAnnotationRecursive(specification.getClass(), ScanScopedBeans.class);
 Set<String> scopes = scanScopedBeans == null ? Collections.<String>emptySet() :
  new HashSet<>(Arrays.asList(scanScopedBeans.value()));
 ApplicationContext applicationContext = testContext.getApplicationContext();
 String[] mockBeanNames = applicationContext.getBeanDefinitionNames();
 List<Object> mockedBeans = new ArrayList<>();
 for (String beanName : mockBeanNames) {
  BeanDefinition beanDefinition = ((BeanDefinitionRegistry)applicationContext).getBeanDefinition(beanName);
  if (beanDefinition.isAbstract() || beanDefinition.isLazyInit()) {
   continue;
  }
  if (beanDefinition.isSingleton() || scanScopedBean(scanScopedBeans, scopes, beanDefinition)) {
   Object bean = applicationContext.getBean(beanName);
   if (mockUtil.isMock(bean)) {
    mockUtil.attachMock(bean, specification);
    mockedBeans.add(bean);
   }
  }
 }
 testContext.setAttribute(MOCKED_BEANS_LIST, mockedBeans);
}

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

if (containingBd != null && !containingBd.isSingleton() && mbd.isSingleton()) {
  mbd.setScope(containingBd.getScope());

代码示例来源:origin: org.springframework/spring-beans

if (containingBd != null && !containingBd.isSingleton() && mbd.isSingleton()) {
  mbd.setScope(containingBd.getScope());

代码示例来源:origin: resteasy/Resteasy

private static boolean isSingleton(BeanDefinition beanDef)
{
 try
 {
   return beanDef.isSingleton();
 }
 catch (NoSuchBeanDefinitionException nsbde)
 {
   // cannot distinguish between singleton & prototype
   return false;
 }
}

代码示例来源:origin: resteasy/Resteasy

private boolean isSingleton(String beanName)
 {
   boolean isSingleton = false;
   try
   {
    BeanDefinition beanDef = beanFactory.getBeanDefinition(beanName);
    isSingleton = beanDef.isSingleton();
   }
   catch (org.springframework.beans.factory.NoSuchBeanDefinitionException nsbde)
   {
    // cannot distinguish between singleton & prototype
   }
   return isSingleton;
 }
}

代码示例来源:origin: camunda/camunda-bpm-platform

if (containingBd != null && !containingBd.isSingleton() && mbd.isSingleton()) {
  mbd.setScope(containingBd.getScope());

代码示例来源:origin: org.tinygroup/org.tinygroup.springmerge

public boolean isSingleton() {
  if (isBeanClassNameUpdated) {// 如果class变的话,用变更后的属性定义
    return mergedBeanDefinition.isSingleton();
  }
  boolean mergedIsSingleton = mergedBeanDefinition.isSingleton();
  boolean currentIsSingleton = currentBeanDefinition.isSingleton();
  if (!mergedIsSingleton && mergedIsSingleton != currentIsSingleton) {
    if (logger.isInfoEnabled()) {
      logger.info("将原isSingleton属性值" + currentIsSingleton + "替换为" + mergedIsSingleton);
    }
    return mergedIsSingleton;
  }
  return currentIsSingleton;
}

代码示例来源:origin: cris001/MyRepo

private static void parseSingleRef(String property, Element element, BeanDefinition bd,
                  ParserContext parserContext) {
  String value = element.getAttribute(property);
  if (StringUtils.isNotBlank(value)) {
    if (parserContext.getRegistry().containsBeanDefinition(value)) {
      BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);
      if (!refBean.isSingleton()) {
        throw new IllegalStateException("The exported service ref " + value + " must be singleton! Please set the " + value
            + " bean scope to singleton, eg: <bean id=\"" + value + "\" scope=\"singleton\" ...>");
      }
    }
    bd.getPropertyValues().addPropertyValue(property, new RuntimeBeanReference(value));
  }
}

代码示例来源:origin: org.beangle.ioc/beangle-ioc-spring

/**
 * <p>
 * register.
 * </p>
 *
 * @param type a {@link java.lang.Class} object.
 * @param name a {@link java.lang.String} object.
 * @param args a {@link java.lang.Object} object.
 */
public void register(Class<?> type, String name, Object... args) {
 Assert.notNull(name, "class'name is null");
 if (0 == args.length) {
  nameTypes.put(name, type);
 } else {
  // 注册bean的name和别名
  BeanDefinition bd = (BeanDefinition) args[0];
  definitionRegistry.registerBeanDefinition(name, bd);
  // for list(a.class,b.class) binding usage
  String alias = bd.getBeanClassName();
  if (bd.isSingleton() && !name.equals(alias) && !definitionRegistry.isBeanNameInUse(alias)) {
   definitionRegistry.registerAlias(name, alias);
  }
  if (null == type) {
   if (!bd.isAbstract()) throw new RuntimeException("Concrete bean should has class.");
  } else nameTypes.put(name, type);
 }
}

代码示例来源:origin: com.atlassian.plugins/atlassian-plugins-spring

@Override
public void postProcessBeanDefinitionRegistry(@Nonnull BeanDefinitionRegistry registry) throws BeansException {
  log.debug("Scanning al;l bean definitions for plugin-available @Bean methods");
  final PluginBeanDefinitionRegistry pluginBeanDefinitionRegistry = registryFactory.apply(registry);
  for (String beanName : registry.getBeanDefinitionNames()) {
    final BeanDefinition beanDefinition = registry.getBeanDefinition(beanName);
    if (beanDefinition instanceof AnnotatedBeanDefinition) {
      final MethodMetadata factoryMethodMetadata = ((AnnotatedBeanDefinition) beanDefinition).getFactoryMethodMetadata();
      if (factoryMethodMetadata != null) {
        final boolean isPluginAvailable = factoryMethodMetadata.isAnnotated(AvailableToPlugins.class.getName());
        if (isPluginAvailable) {
          if (beanDefinition.isSingleton()) {
            log.debug("Registering bean '{}' as plugin-available", beanName);
            registerPluginAvailableBean(beanName, factoryMethodMetadata, pluginBeanDefinitionRegistry);
          } else {
            log.warn("Bean '{}' is not singleton-scoped, and cannot be made available to plugins", beanName);
          }
        }
      }
    }
  }
}

代码示例来源:origin: org.springframework.boot/spring-boot-test

private void resetMocks(ConfigurableApplicationContext applicationContext,
    MockReset reset) {
  ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
  String[] names = beanFactory.getBeanDefinitionNames();
  Set<String> instantiatedSingletons = new HashSet<>(
      Arrays.asList(beanFactory.getSingletonNames()));
  for (String name : names) {
    BeanDefinition definition = beanFactory.getBeanDefinition(name);
    if (definition.isSingleton() && instantiatedSingletons.contains(name)) {
      Object bean = beanFactory.getSingleton(name);
      if (reset.equals(MockReset.get(bean))) {
        Mockito.reset(bean);
      }
    }
  }
  try {
    MockitoBeans mockedBeans = beanFactory.getBean(MockitoBeans.class);
    for (Object mockedBean : mockedBeans) {
      if (reset.equals(MockReset.get(mockedBean))) {
        Mockito.reset(mockedBean);
      }
    }
  }
  catch (NoSuchBeanDefinitionException ex) {
    // Continue
  }
  if (applicationContext.getParent() != null) {
    resetMocks(applicationContext.getParent(), reset);
  }
}

代码示例来源:origin: org.mule.modules/mule-module-spring-config

@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext)
{
  preProcess(element);
  setParserContext(parserContext);
  setRegistry(parserContext.getRegistry());
  Class beanClass = getBeanClass(element);
  Assert.state(beanClass != null, "Class returned from getBeanClass(Element) must not be null, element is: " + element.getNodeName());
  BeanDefinitionBuilder builder = createBeanDefinitionBuilder(element, beanClass);
  builder.getRawBeanDefinition().setSource(parserContext.extractSource(element));
  if (parserContext.isNested())
  {
    // Inner bean definition must receive same singleton status as containing bean.
    builder.setScope(parserContext.getContainingBeanDefinition().isSingleton()
      ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE);
  }
  doParse(element, parserContext, builder);
  BeanAssembler beanAssembler = getBeanAssembler(element, builder);
  beanAssembler.copyBeanToTarget();
  return (AbstractBeanDefinition) beanAssembler.getTarget();
}

相关文章

微信公众号

最新文章

更多