io.micronaut.inject.BeanDefinition类的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(12.5k)|赞(0)|评价(0)|浏览(121)

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

BeanDefinition介绍

[英]Defines a bean definition and its requirements. A bean definition must have a singled injectable constructor or a no-args constructor.
[中]定义bean定义及其需求。bean定义必须具有单注入构造函数或无参数构造函数。

代码示例

代码示例来源:origin: micronaut-projects/micronaut-core

@Override
  public void process(BeanDefinition<?> beanDefinition, ExecutableMethod<?, ?> method) {
    Class<?> beanType = beanDefinition.getBeanType();
    if (mappedWebSockets.contains(beanType)) {
      return;
    }

    if (method.isAnnotationPresent(OnMessage.class) || method.isAnnotationPresent(OnOpen.class)) {
      mappedWebSockets.add(beanType);
      String uri = beanDefinition.getValue(ServerWebSocket.class, String.class).orElse("/ws");

      UriRoute route = GET(uri, method);

      if (LOG.isDebugEnabled()) {
        LOG.debug("Created WebSocket: {}", route);
      }
    }
  }
}

代码示例来源:origin: micronaut-projects/micronaut-core

@SuppressWarnings("unchecked")
@Override
public void process(BeanDefinition<?> beanDefinition, ExecutableMethod<?, ?> method) {
  if (beanDefinition.hasAnnotation(FunctionBean.class)) {
    String methodName = method.getMethodName();
    Class<?> declaringType = method.getDeclaringType();
    String functionName = beanDefinition.getValue(FunctionBean.class, String.class).orElse(methodName);
    String functionMethod = beanDefinition.getValue(FunctionBean.class, "method", String.class).orElse(null);
        List<Argument<?>> typeArguments = beanDefinition.getTypeArguments();
        if (!typeArguments.isEmpty()) {
          int size = typeArguments.size();

代码示例来源:origin: micronaut-projects/micronaut-core

private void processHttpMethods(Collection<BeanDefinition<?>> clientBeans) {
  for (BeanDefinition<?> clientBean : clientBeans) {
    final Optional<Class[]> additionalTypes = clientBean.getValue(TypeHint.class, Class[].class);
    additionalTypes.ifPresent(classes -> {
      for (Class aClass : classes) {
        ClassLoadingReporter.reportBeanPresent(aClass);
      }
    });
    final Collection<? extends ExecutableMethod<?, ?>> executableMethods = clientBean.getExecutableMethods();
    executableMethods.parallelStream().forEach((Consumer<ExecutableMethod<?, ?>>) executableMethod -> {
      if (executableMethod.hasStereotype(HttpMethodMapping.class)) {
        final ReturnType<?> returnType = executableMethod.getReturnType();
        final Class<?> javaType = returnType.getType();
        if (!ClassUtils.isJavaLangType(javaType)) {
          ClassLoadingReporter.reportBeanPresent(javaType);
        }
        reportArguments(returnType.getTypeParameters());
        reportArguments(executableMethod.getArguments());
      }
    });
  }
}

代码示例来源:origin: micronaut-projects/micronaut-core

return Flowable.create(emitter -> {
  SslContext sslContext = buildSslContext(uri);
  WebSocketVersion protocolVersion = finalWebSocketBean.getBeanDefinition().getValue(ClientWebSocket.class, "version", WebSocketVersion.class).orElse(WebSocketVersion.V13);
  int maxFramePayloadLength = finalWebSocketBean.messageMethod().flatMap(m -> m.getValue(OnMessage.class, "maxPayloadLength", Integer.class)).orElse(65536);

代码示例来源:origin: io.micronaut/management

/**
   * @param beanDefinition A bean definition
   * @return The type of the bean as String
   */
  protected String getType(BeanDefinition<?> beanDefinition) {
    return beanDefinition.getBeanType().getName();
  }
}

代码示例来源:origin: io.micronaut/management

/**
 * @param declaringType The type
 * @return An optional string with the endpoint id
 */
protected Optional<String> resolveActiveEndPointId(Class<?> declaringType) {
  return endpointIds.computeIfAbsent(declaringType, aClass -> {
    Optional<? extends BeanDefinition<?>> opt = beanContext.findBeanDefinition(declaringType);
    if (opt.isPresent()) {
      BeanDefinition<?> beanDefinition = opt.get();
      if (beanDefinition.hasStereotype(Endpoint.class)) {
        String id = beanDefinition.getValue(Endpoint.class, String.class).orElse(null);
        if (id == null || !ENDPOINT_ID_PATTERN.matcher(id).matches()) {
          id = NameUtils.hyphenate(beanDefinition.getName());
        }
        return Optional.ofNullable(id);
      }
    }
    return Optional.empty();
  });
}

代码示例来源:origin: io.micronaut/micronaut-inject

Optional<String> optional = beanDefinition.getValue(javax.inject.Named.class, String.class);
  qualifier = (Qualifier<T>) optional.map(name -> Qualifiers.byAnnotation(beanDefinition, name)).orElse(null);
Optional<Class<? extends Annotation>> qualifierAnn = beanDefinition.getAnnotationTypeByStereotype(javax.inject.Qualifier.class);
if (qualifierAnn.isPresent()) {
  Class annotation = qualifierAnn.get();
  if (!beanDefinition.isIterable()) {
    BeanKey primaryBeanKey = new BeanKey<>(createdType, null);
    singletonObjects.put(primaryBeanKey, registration);
  } else {
    if (beanDefinition.isPrimary()) {
      BeanKey primaryBeanKey = new BeanKey<>(beanType, null);
      singletonObjects.put(primaryBeanKey, registration);

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

if (beanExcludes.contains(definition.getBeanType())) {
  continue;
if (definition.isEnabled(beanContext)) {
  if (definition.isIterable()) {
    Collection<? extends BeanDefinition<?>> beanDefinitions = beanContext.getBeanDefinitions(definition.getBeanType());
    for (BeanDefinition<?> beanDefinition : beanDefinitions) {
      String beanName = computeBeanName(beanDefinition);
  if (definition.isAnnotationPresent(Component.class)) {
    final Optional<String> v = definition.getValue(Component.class, String.class);
    v.ifPresent(s -> beanDefinitionsByName.put(s, reference));
  if (definition.isAnnotationPresent(org.springframework.context.annotation.Bean.class)) {
    final Optional<String> v = definition.getValue(org.springframework.context.annotation.Bean.class, String.class);
    v.ifPresent(s -> beanDefinitionsByName.put(s, reference));

代码示例来源:origin: io.micronaut/inject

boolean isSingleton,
             Map<String, Object> argumentValues) {
BeanRegistration<T> beanRegistration = isSingleton && !beanDefinition.isIterable() ? singletonObjects.get(new BeanKey(beanDefinition.getBeanType(), qualifier)) : null;
T bean;
if (beanRegistration != null) {
      Argument<?>[] requiredArguments = parametrizedBeanFactory.getRequiredArguments();
      if (argumentValues == null) {
        throw new BeanInstantiationException(resolutionContext, "Missing bean arguments for type: " + beanDefinition.getBeanType().getName() + ". Requires arguments: " + ArrayUtils.toString(requiredArguments));
  ConstructorInjectionPoint<T> constructor = beanDefinition.getConstructor();
  Argument[] requiredConstructorArguments = constructor.getArguments();
  if (requiredConstructorArguments.length == 0) {
    BeanKey beanKey = new BeanKey(beanDefinition.getBeanType(), qualifier);
    for (BeanRegistration<BeanCreatedEventListener> registration : beanCreationEventListeners) {
      BeanDefinition<BeanCreatedEventListener> definition = registration.getBeanDefinition();
      List<Argument<?>> typeArguments = definition.getTypeArguments(BeanCreatedEventListener.class);
      if (CollectionUtils.isEmpty(typeArguments) || typeArguments.get(0).getType().isAssignableFrom(beanDefinition.getBeanType())) {
        BeanCreatedEventListener listener = registration.getBean();
        bean = (T) listener.onCreated(new BeanCreatedEvent(this, beanDefinition, beanKey, bean));

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

private String computeBeanName(BeanDefinition<?> definition) {
  String name;
  if (definition instanceof NameResolver) {
    name = ((NameResolver) definition).resolveName().orElse(Primary.class.getSimpleName());
  } else {
    name = definition.getValue(Named.class, String.class).orElseGet(() ->
        definition.getAnnotationTypeByStereotype(Qualifier.class).map(Class::getSimpleName).orElse(definition.getClass().getSimpleName())
    );
  }
  return definition.getBeanType().getName() + "(" + name + ")";
}

代码示例来源:origin: io.micronaut/micronaut-spring

final BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(MicronautSpringBeanFactory.class.getName());
        beanDefinitionBuilder.addPropertyValue(MICRONAUT_BEAN_TYPE_PROPERTY_NAME, definition.getBeanType());
        beanDefinitionBuilder.addPropertyValue(MICRONAUT_CONTEXT_PROPERTY_NAME, micronautContext);
        beanDefinitionBuilder.addPropertyValue(MICRONAUT_SINGLETON_PROPERTY_NAME, definition.isSingleton());
        ((DefaultListableBeanFactory) beanFactory).registerBeanDefinition(definition.getName(), beanDefinitionBuilder.getBeanDefinition());
      });
});

代码示例来源:origin: io.micronaut/inject

@SuppressWarnings("unchecked")
private <T> T getScopedBeanForDefinition(BeanResolutionContext resolutionContext, Class<T> beanType, Qualifier<T> qualifier, boolean throwNoSuchBean, BeanDefinition<T> definition) {
  final boolean isProxy = definition.isProxy();
  final boolean isScopedProxyDefinition = definition.hasStereotype(SCOPED_PROXY_ANN);
  if (qualifier != PROXY_TARGET_QUALIFIER && !isProxy && isScopedProxyDefinition) {
    BeanKey<T> key = new BeanKey<>(beanType, qualifier);
        throw new NoSuchBeanException(proxyDefinition.getBeanType(), qualifier);
      final List<String> scopeHierarchy = definition.getAnnotationNamesByStereotype(Scope.class);
      for (String scope : scopeHierarchy) {
        registeredScope = customScopeRegistry.findScope(scope);
      T createBean = doCreateBean(resolutionContext, definition, qualifier, false, null);
      if (createBean == null && throwNoSuchBean) {
        throw new NoSuchBeanException(definition.getBeanType(), qualifier);

代码示例来源:origin: io.micronaut/micronaut-inject

@Override
public String getName() {
  return definition.getName();
}

代码示例来源:origin: io.micronaut/micronaut-inject

/**
 * If the bean itself declares any type arguments this method will return the classes that represent those types.
 *
 * @return The type arguments
 */
default @Nonnull List<Argument<?>> getTypeArguments() {
  return getTypeArguments(getBeanType());
}

代码示例来源:origin: io.micronaut/runtime

.getAnnotationTypeByStereotype(Qualifier.class)
  .map(type -> Qualifiers.byAnnotation(beanDefinition, type))
  .orElse(null);
Class<Object> beanType = (Class<Object>) beanDefinition.getBeanType();
Object bean = beanContext.getBean(beanType, qualifer);
try {
  Collection<BeanDefinition<TaskExceptionHandler>> definitions = beanContext.getBeanDefinitions(TaskExceptionHandler.class, qualifier);
  Optional<BeanDefinition<TaskExceptionHandler>> mostSpecific = definitions.stream().filter(def -> {
    List<Argument<?>> typeArguments = def.getTypeArguments(TaskExceptionHandler.class);
    if (typeArguments.size() == 2) {
      return typeArguments.get(0).getType() == beanType && typeArguments.get(1).getType() == e.getClass();
  }).findFirst();
  TaskExceptionHandler finalHandler = mostSpecific.map(bd -> beanContext.getBean(bd.getBeanType(), qualifier)).orElse(this.taskExceptionHandler);
  finalHandler.handle(bean, e);

代码示例来源:origin: io.micronaut/micronaut-inject

/**
 * A bean key for the given bean definition.
 * @param definition The definition
 * @param qualifier The qualifier
 */
BeanKey(BeanDefinition<T> definition, Qualifier<T> qualifier) {
  this(definition.getBeanType(), qualifier, definition.getTypeParameters());
}

代码示例来源:origin: io.micronaut/router

private UriRoute buildBeanRoute(HttpMethod httpMethod, String uri, BeanDefinition<?> beanDefinition, ExecutableMethod<?, ?> method) {
  io.micronaut.context.Qualifier<?> qualifier = beanDefinition.getAnnotationTypeByStereotype(Qualifier.class).map(aClass -> Qualifiers.byAnnotation(beanDefinition, aClass)).orElse(null);
  MethodExecutionHandle<?, Object> executionHandle = executionHandleLocator.findExecutionHandle(beanDefinition.getBeanType(), qualifier, method.getMethodName(), method.getArgumentTypes())
      .orElseThrow(() -> new RoutingException("No such route: " + beanDefinition.getBeanType().getName() + "." + method));
  return buildRoute(httpMethod, uri, executionHandle);
}

代码示例来源:origin: micronaut-projects/micronaut-core

BeanDefinition<Object> beanDefinition = applicationContext.getBeanDefinition(functionType, qualifier);
Object bean = applicationContext.getBean(functionType, qualifier);
List<Argument<?>> typeArguments = beanDefinition.getTypeArguments();

代码示例来源:origin: io.micronaut/inject

.filter(bean -> bean.isEnabled(this))
    beanDefinition.getExecutableMethods()
        .parallelStream()
        .map((Function<ExecutableMethod<?, ?>, BeanDefinitionMethodReference<?, ?>>) executableMethod ->
      if (!beanDefinition.hasStereotype(annotationType)) {

代码示例来源:origin: io.micronaut/inject

private <T> T getBeanForDefinition(
    BeanResolutionContext resolutionContext,
    Class<T> beanType, Qualifier<T> qualifier,
    boolean throwNoSuchBean,
    BeanDefinition<T> definition) {
  if (definition.isSingleton() && !definition.hasStereotype(SCOPED_PROXY_ANN)) {
    return createAndRegisterSingleton(resolutionContext, definition, beanType, qualifier);
  } else {
    return getScopedBeanForDefinition(resolutionContext, beanType, qualifier, throwNoSuchBean, definition);
  }
}

相关文章