Class DefaultBeanContext

    • Field Detail

      • LOG

        protected static final org.slf4j.Logger LOG
      • LOG_LIFECYCLE

        protected static final org.slf4j.Logger LOG_LIFECYCLE
      • running

        protected final java.util.concurrent.atomic.AtomicBoolean running
      • initializing

        protected final java.util.concurrent.atomic.AtomicBoolean initializing
      • terminating

        protected final java.util.concurrent.atomic.AtomicBoolean terminating
    • Constructor Detail

      • DefaultBeanContext

        public DefaultBeanContext()
        Construct a new bean context using the same classloader that loaded this DefaultBeanContext class.
      • DefaultBeanContext

        public DefaultBeanContext​(@NonNull
                                  java.lang.ClassLoader classLoader)
        Construct a new bean context with the given class loader.
        Parameters:
        classLoader - The class loader
      • DefaultBeanContext

        public DefaultBeanContext​(@NonNull
                                  io.micronaut.core.io.scan.ClassPathResourceLoader resourceLoader)
        Construct a new bean context with the given class loader.
        Parameters:
        resourceLoader - The resource loader
      • DefaultBeanContext

        public DefaultBeanContext​(@NonNull
                                  BeanContextConfiguration contextConfiguration)
        Creates a new bean context with the given configuration.
        Parameters:
        contextConfiguration - The context configuration
    • Method Detail

      • createCustomScopeRegistry

        @NonNull
        protected CustomScopeRegistry createCustomScopeRegistry()
        Allows customizing the custom scope registry.
        Returns:
        The custom scope registry to use.
        Since:
        3.0.0
      • start

        public BeanContext start()
        The start method will read all bean definition classes found on the classpath and initialize any pre-required state.
        Specified by:
        start in interface LifeCycle<BeanContext>
        Returns:
        This lifecycle component
      • stop

        public BeanContext stop()
        The close method will shut down the context calling PreDestroy hooks on loaded singletons.
        Specified by:
        stop in interface LifeCycle<BeanContext>
        Returns:
        This lifecycle component
      • resolveMetadata

        @NonNull
        public io.micronaut.core.annotation.AnnotationMetadata resolveMetadata​(java.lang.Class<?> type)
        Specified by:
        resolveMetadata in interface io.micronaut.core.annotation.AnnotationMetadataResolver
      • refreshBean

        public <T> java.util.Optional<T> refreshBean​(@Nullable
                                                     BeanIdentifier identifier)
        Description copied from interface: BeanContext

        Refresh the state of the given registered bean applying dependency injection and configuration wiring again.

        Note that if the bean was produced by a Factory then this method will refresh the factory too

        Specified by:
        refreshBean in interface BeanContext
        Type Parameters:
        T - The concrete class
        Parameters:
        identifier - The BeanIdentifier
        Returns:
        An Optional of the instance if it exists for the given registration
      • refreshBean

        public <T> void refreshBean​(@NonNull
                                    BeanRegistration<T> beanRegistration)
        Description copied from interface: BeanContext

        Refresh the state of the given registered bean applying dependency injection and configuration wiring again.

        Note that if the bean was produced by a Factory then this method will refresh the factory too

        This methods skips an additional resolution of the BeanRegistration.
        Specified by:
        refreshBean in interface BeanContext
        Type Parameters:
        T - The concrete class
        Parameters:
        beanRegistration - The BeanRegistration
      • getActiveBeanRegistrations

        public java.util.Collection<BeanRegistration<?>> getActiveBeanRegistrations​(Qualifier<?> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Find active Singleton beans for the given qualifier. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
        Specified by:
        getActiveBeanRegistrations in interface BeanDefinitionRegistry
        Parameters:
        qualifier - The qualifier
        Returns:
        The beans
      • getActiveBeanRegistrations

        public <T> java.util.Collection<BeanRegistration<T>> getActiveBeanRegistrations​(java.lang.Class<T> beanType)
        Description copied from interface: BeanDefinitionRegistry
        Find active Singleton beans for the given bean type. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
        Specified by:
        getActiveBeanRegistrations in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        Returns:
        The beans
      • getBeanRegistrations

        public <T> java.util.Collection<BeanRegistration<T>> getBeanRegistrations​(java.lang.Class<T> beanType)
        Description copied from interface: BeanDefinitionRegistry
        Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
        Specified by:
        getBeanRegistrations in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        Returns:
        The beans
      • getBeanRegistration

        public <T> BeanRegistration<T> getBeanRegistration​(java.lang.Class<T> beanType,
                                                           Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Find a bean registration for the given bean type and optional qualifier.
        Specified by:
        getBeanRegistration in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The bean registration
      • getBeanRegistrations

        public <T> java.util.Collection<BeanRegistration<T>> getBeanRegistrations​(java.lang.Class<T> beanType,
                                                                                  Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
        Specified by:
        getBeanRegistrations in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The beans
      • getBeanRegistrations

        public <T> java.util.Collection<BeanRegistration<T>> getBeanRegistrations​(io.micronaut.core.type.Argument<T> beanType,
                                                                                  Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
        Specified by:
        getBeanRegistrations in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The beans
      • getBeanRegistration

        public <T> BeanRegistration<T> getBeanRegistration​(io.micronaut.core.type.Argument<T> beanType,
                                                           Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Find a bean registration for the given bean type and optional qualifier.
        Specified by:
        getBeanRegistration in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The potentially parameterized bean type
        qualifier - The qualifier
        Returns:
        The bean registration
      • findExecutionHandle

        public <T,​R> java.util.Optional<MethodExecutionHandle<T,​R>> findExecutionHandle​(java.lang.Class<T> beanType,
                                                                                                    java.lang.String method,
                                                                                                    java.lang.Class... arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds an optimized execution handle for invoking a bean method. The execution handle may or may not be implemented by generated byte code.
        Specified by:
        findExecutionHandle in interface ExecutionHandleLocator
        Type Parameters:
        T - The target bean
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • findExecutionHandle

        public <T,​R> java.util.Optional<MethodExecutionHandle<T,​R>> findExecutionHandle​(java.lang.Class<T> beanType,
                                                                                                    Qualifier<?> qualifier,
                                                                                                    java.lang.String method,
                                                                                                    java.lang.Class... arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds an optimized execution handle for invoking a bean method. The execution handle may or may not be implemented by generated byte code.
        Specified by:
        findExecutionHandle in interface ExecutionHandleLocator
        Type Parameters:
        T - The target bean
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        qualifier - The bean qualifer
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • findExecutableMethod

        public <T,​R> java.util.Optional<ExecutableMethod<T,​R>> findExecutableMethod​(java.lang.Class<T> beanType,
                                                                                                java.lang.String method,
                                                                                                java.lang.Class[] arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds an optimized execution handle for invoking a bean method. The execution handle may or may not be implemented by generated byte code.
        Specified by:
        findExecutableMethod in interface ExecutionHandleLocator
        Type Parameters:
        T - The bean type class
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • findExecutionHandle

        public <T,​R> java.util.Optional<MethodExecutionHandle<T,​R>> findExecutionHandle​(T bean,
                                                                                                    java.lang.String method,
                                                                                                    java.lang.Class[] arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds an optimized execution handle for invoking a bean method. The execution handle may or may not be implemented by generated byte code.
        Specified by:
        findExecutionHandle in interface ExecutionHandleLocator
        Type Parameters:
        T - The target bean
        R - The result type of the execution handle
        Parameters:
        bean - The bean to invoke the method on
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • registerSingleton

        public <T> BeanContext registerSingleton​(@NonNull
                                                 java.lang.Class<T> type,
                                                 @NonNull
                                                 T singleton,
                                                 Qualifier<T> qualifier,
                                                 boolean inject)
        Description copied from interface: BeanDefinitionRegistry

        Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

        If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

        If no bean definition data is found the bean is registered as is.

        Specified by:
        registerSingleton in interface BeanContext
        Specified by:
        registerSingleton in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        type - The bean type
        singleton - The singleton bean
        qualifier - The bean qualifier
        inject - Whether the singleton should be injected (defaults to true)
        Returns:
        This bean context
      • getClassLoader

        public java.lang.ClassLoader getClassLoader()
        Specified by:
        getClassLoader in interface BeanContext
        Returns:
        The class loader used by this context
      • findBeanConfiguration

        public java.util.Optional<BeanConfiguration> findBeanConfiguration​(java.lang.String configurationName)
        Description copied from interface: BeanDefinitionRegistry
        Obtain a bean configuration by name.
        Specified by:
        findBeanConfiguration in interface BeanDefinitionRegistry
        Parameters:
        configurationName - The configuration name
        Returns:
        An optional with the configuration either present or not
      • findBeanDefinition

        public <T> java.util.Optional<BeanDefinition<T>> findBeanDefinition​(io.micronaut.core.type.Argument<T> beanType,
                                                                            Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Obtain a BeanDefinition for the given type.
        Specified by:
        findBeanDefinition in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The potentially parameterized type
        qualifier - The qualifier
        Returns:
        An Optional of the bean definition
      • containsBean

        public <T> boolean containsBean​(@NonNull
                                        java.lang.Class<T> beanType,
                                        Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Return whether the bean of the given type is contained within this context.
        Specified by:
        containsBean in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier for the bean
        Returns:
        True if it is
      • containsBean

        public <T> boolean containsBean​(io.micronaut.core.type.Argument<T> beanType,
                                        Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Return whether the bean of the given type is contained within this context.
        Specified by:
        containsBean in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier for the bean
        Returns:
        True if it is
      • getBean

        @NonNull
        public <T> T getBean​(@NonNull
                             java.lang.Class<T> beanType,
                             @Nullable
                             Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Obtains a Bean for the given type and qualifier.
        Specified by:
        getBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        An instanceof said bean
        See Also:
        Qualifiers
      • getBean

        @NonNull
        public <T> T getBean​(@NonNull
                             java.lang.Class<T> beanType)
        Description copied from interface: BeanLocator
        Obtains a Bean for the given type.
        Specified by:
        getBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        Returns:
        An instanceof said bean
      • getBean

        @NonNull
        public <T> T getBean​(@NonNull
                             io.micronaut.core.type.Argument<T> beanType,
                             @Nullable
                             Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Obtains a Bean for the given type and qualifier.
        Specified by:
        getBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The potentially parameterized bean type
        qualifier - The qualifier
        Returns:
        An instanceof said bean
        See Also:
        Qualifiers
      • findBean

        public <T> java.util.Optional<T> findBean​(java.lang.Class<T> beanType,
                                                  Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Finds a Bean for the given type and qualifier.
        Specified by:
        findBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        An instance of Optional that is either empty or containing the specified bean
        See Also:
        Qualifiers
      • findBean

        public <T> java.util.Optional<T> findBean​(io.micronaut.core.type.Argument<T> beanType,
                                                  Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Finds a Bean for the given type and qualifier.
        Specified by:
        findBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        An instance of Optional that is either empty or containing the specified bean
        See Also:
        Qualifiers
      • getBeansOfType

        public <T> java.util.Collection<T> getBeansOfType​(java.lang.Class<T> beanType)
        Description copied from interface: BeanLocator
        Get all beans of the given type.
        Specified by:
        getBeansOfType in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        Returns:
        The found beans
      • getBeansOfType

        public <T> java.util.Collection<T> getBeansOfType​(java.lang.Class<T> beanType,
                                                          Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Get all beans of the given type.
        Specified by:
        getBeansOfType in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found beans
      • getBeansOfType

        public <T> java.util.Collection<T> getBeansOfType​(io.micronaut.core.type.Argument<T> beanType)
        Description copied from interface: BeanLocator
        Get all beans of the given type.
        Specified by:
        getBeansOfType in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The potenitally parameterized bean type
        Returns:
        The found beans
      • getBeansOfType

        public <T> java.util.Collection<T> getBeansOfType​(io.micronaut.core.type.Argument<T> beanType,
                                                          Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Get all beans of the given type.
        Specified by:
        getBeansOfType in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        beanType - The potenitally parameterized bean type
        qualifier - The qualifier
        Returns:
        The found beans
      • streamOfType

        public <T> java.util.stream.Stream<T> streamOfType​(java.lang.Class<T> beanType,
                                                           Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Obtain a stream of beans of the given type.
        Specified by:
        streamOfType in interface BeanLocator
        Type Parameters:
        T - The bean concrete type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        A stream of instances
        See Also:
        Qualifiers
      • streamOfType

        public <T> java.util.stream.Stream<T> streamOfType​(io.micronaut.core.type.Argument<T> beanType,
                                                           Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Obtain a stream of beans of the given type.
        Specified by:
        streamOfType in interface BeanLocator
        Type Parameters:
        T - The bean concrete type
        Parameters:
        beanType - The potentially parameterized bean type
        qualifier - The qualifier
        Returns:
        A stream of instances
        See Also:
        Qualifiers
      • streamOfType

        protected <T> java.util.stream.Stream<T> streamOfType​(BeanResolutionContext resolutionContext,
                                                              java.lang.Class<T> beanType,
                                                              Qualifier<T> qualifier)
        Obtains a stream of beans of the given type and qualifier.
        Type Parameters:
        T - The bean concrete type
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        A stream
      • streamOfType

        @Internal
        public <T> java.util.stream.Stream<T> streamOfType​(BeanResolutionContext resolutionContext,
                                                           io.micronaut.core.type.Argument<T> beanType,
                                                           Qualifier<T> qualifier)
        Obtains a stream of beans of the given type and qualifier.
        Type Parameters:
        T - The bean concrete type
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        A stream
      • inject

        @NonNull
        public <T> T inject​(@NonNull
                            T instance)
        Description copied from interface: BeanContext
        Inject an existing instance.
        Specified by:
        inject in interface BeanContext
        Type Parameters:
        T - The bean generic type
        Parameters:
        instance - The instance to inject
        Returns:
        The instance to inject
      • createBean

        @NonNull
        public <T> T createBean​(@NonNull
                                java.lang.Class<T> beanType,
                                @Nullable
                                Qualifier<T> qualifier)
        Description copied from interface: BeanContext
        Creates a new instance of the given bean performing dependency injection and returning a new instance.

        Note that the instance returned is not saved as a singleton in the context.

        Specified by:
        createBean in interface BeanContext
        Type Parameters:
        T - The bean generic type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The instance
      • createBean

        @NonNull
        public <T> T createBean​(@NonNull
                                java.lang.Class<T> beanType,
                                @Nullable
                                Qualifier<T> qualifier,
                                @Nullable
                                java.util.Map<java.lang.String,​java.lang.Object> argumentValues)
        Description copied from interface: BeanContext

        Creates a new instance of the given bean performing dependency injection and returning a new instance.

        If the bean defines any Parameter values then the values passed in the argumentValues parameter will be used

        Note that the instance returned is not saved as a singleton in the context.

        Specified by:
        createBean in interface BeanContext
        Type Parameters:
        T - The bean generic type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        argumentValues - The argument values
        Returns:
        The instance
      • createBean

        @NonNull
        public <T> T createBean​(@NonNull
                                java.lang.Class<T> beanType,
                                @Nullable
                                Qualifier<T> qualifier,
                                @Nullable
                                java.lang.Object... args)
        Description copied from interface: BeanContext

        Creates a new instance of the given bean performing dependency injection and returning a new instance.

        If the bean defines any Parameter values then the values passed in the argumentValues parameter will be used

        Note that the instance returned is not saved as a singleton in the context.

        Specified by:
        createBean in interface BeanContext
        Type Parameters:
        T - The bean generic type
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        args - The argument values
        Returns:
        The instance
      • doCreateBean

        @NonNull
        protected <T> T doCreateBean​(@NonNull
                                     BeanResolutionContext resolutionContext,
                                     @NonNull
                                     BeanDefinition<T> definition,
                                     @NonNull
                                     io.micronaut.core.type.Argument<T> beanType,
                                     @Nullable
                                     Qualifier<T> qualifier,
                                     @Nullable
                                     java.lang.Object... args)
        Type Parameters:
        T - the bean generic type
        Parameters:
        resolutionContext - The bean resolution context
        definition - The bean definition
        beanType - The bean type
        qualifier - The qualifier
        args - The argument values
        Returns:
        The instance
      • destroyBean

        @Nullable
        public <T> T destroyBean​(@NonNull
                                 io.micronaut.core.type.Argument<T> beanType,
                                 Qualifier<T> qualifier)
        Description copied from interface: BeanContext
        Destroys the bean for the given type causing it to be re-created. If a singleton has been loaded it will be destroyed and removed from the context, otherwise null will be returned.
        Specified by:
        destroyBean in interface BeanContext
        Type Parameters:
        T - The concrete class
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The destroy instance or null if no such bean exists
      • destroyBean

        @NonNull
        public <T> T destroyBean​(@NonNull
                                 T bean)
        Description copied from interface: BeanContext
        Destroys the given bean.
        Specified by:
        destroyBean in interface BeanContext
        Type Parameters:
        T - The concrete class
        Parameters:
        bean - The bean
        Returns:
        The destroy instance
      • destroyBean

        @Nullable
        public <T> T destroyBean​(@NonNull
                                 java.lang.Class<T> beanType)
        Description copied from interface: BeanContext
        Destroys the bean for the given type causing it to be re-created. If a singleton has been loaded it will be destroyed and removed from the context, otherwise null will be returned.
        Specified by:
        destroyBean in interface BeanContext
        Type Parameters:
        T - The concrete class
        Parameters:
        beanType - The bean type
        Returns:
        The destroy instance or null if no such bean exists
      • destroyBean

        public <T> void destroyBean​(@NonNull
                                    BeanRegistration<T> registration)
        Description copied from interface: BeanContext
        Destroys the given bean.
        Specified by:
        destroyBean in interface BeanContext
        Type Parameters:
        T - The bean type
        Parameters:
        registration - The bean registration
      • getActiveBeanRegistration

        @Nullable
        protected <T> BeanRegistration<T> getActiveBeanRegistration​(BeanDefinition<T> beanDefinition,
                                                                    Qualifier qualifier)
        Find an active singleton bean for the given definition and qualifier.
        Type Parameters:
        T - The bean generic type
        Parameters:
        beanDefinition - The bean definition
        qualifier - The qualifier
        Returns:
        The bean registration
      • createBean

        @NonNull
        protected <T> T createBean​(@Nullable
                                   BeanResolutionContext resolutionContext,
                                   @NonNull
                                   java.lang.Class<T> beanType,
                                   @Nullable
                                   Qualifier<T> qualifier)
        Creates a bean.
        Type Parameters:
        T - The bean generic type
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The instance
      • inject

        @Internal
        @NonNull
        protected <T> T inject​(@NonNull
                               BeanResolutionContext resolutionContext,
                               @Nullable
                               BeanDefinition<?> requestingBeanDefinition,
                               @NonNull
                               T instance)
        Injects a bean.
        Type Parameters:
        T - The instance type
        Parameters:
        resolutionContext - The bean resolution context
        requestingBeanDefinition - The requesting bean definition
        instance - The instance
        Returns:
        The instance
      • getBeansOfType

        @NonNull
        protected <T> java.util.Collection<T> getBeansOfType​(@Nullable
                                                             BeanResolutionContext resolutionContext,
                                                             @NonNull
                                                             io.micronaut.core.type.Argument<T> beanType)
        Get all beans of the given type.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        Returns:
        The found beans
      • getBeansOfType

        @Internal
        @NonNull
        public <T> java.util.Collection<T> getBeansOfType​(@Nullable
                                                          BeanResolutionContext resolutionContext,
                                                          @NonNull
                                                          io.micronaut.core.type.Argument<T> beanType,
                                                          @Nullable
                                                          Qualifier<T> qualifier)
        Get all beans of the given type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found beans
      • getProxyTargetBean

        @NonNull
        public <T> T getProxyTargetBean​(@NonNull
                                        java.lang.Class<T> beanType,
                                        @Nullable
                                        Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Resolves the proxy target for a given bean type. If the bean has no proxy then the original bean is returned.
        Specified by:
        getProxyTargetBean in interface BeanLocator
        Type Parameters:
        T - The generic type
        Parameters:
        beanType - The bean type
        qualifier - The bean qualifier
        Returns:
        The proxied instance
      • getProxyTargetBean

        @NonNull
        public <T> T getProxyTargetBean​(@NonNull
                                        io.micronaut.core.type.Argument<T> beanType,
                                        @Nullable
                                        Qualifier<T> qualifier)
        Description copied from interface: BeanLocator
        Resolves the proxy target for a given bean type. If the bean has no proxy then the original bean is returned.
        Specified by:
        getProxyTargetBean in interface BeanLocator
        Type Parameters:
        T - The generic type
        Parameters:
        beanType - The bean type
        qualifier - The bean qualifier
        Returns:
        The proxied instance
      • getProxyTargetBean

        @NonNull
        public <T> T getProxyTargetBean​(@Nullable
                                        BeanResolutionContext resolutionContext,
                                        @NonNull
                                        io.micronaut.core.type.Argument<T> beanType,
                                        @Nullable
                                        Qualifier<T> qualifier)
        Resolves the proxy target for a given bean type. If the bean has no proxy then the original bean is returned.
        Type Parameters:
        T - The generic type
        Parameters:
        resolutionContext - The bean resolution context
        beanType - The bean type
        qualifier - The bean qualifier
        Returns:
        The proxied instance
        Since:
        3.1.0
      • findProxyTargetMethod

        @NonNull
        public <T,​R> java.util.Optional<ExecutableMethod<T,​R>> findProxyTargetMethod​(@NonNull
                                                                                                 java.lang.Class<T> beanType,
                                                                                                 @NonNull
                                                                                                 java.lang.String method,
                                                                                                 @NonNull
                                                                                                 java.lang.Class[] arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds the original unproxied method for a ProxyBeanDefinition.
        Specified by:
        findProxyTargetMethod in interface ExecutionHandleLocator
        Type Parameters:
        T - The bean type class
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • findProxyTargetMethod

        @NonNull
        public <T,​R> java.util.Optional<ExecutableMethod<T,​R>> findProxyTargetMethod​(@NonNull
                                                                                                 java.lang.Class<T> beanType,
                                                                                                 Qualifier<T> qualifier,
                                                                                                 @NonNull
                                                                                                 java.lang.String method,
                                                                                                 java.lang.Class... arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds the original unproxied method for a ProxyBeanDefinition.
        Specified by:
        findProxyTargetMethod in interface ExecutionHandleLocator
        Type Parameters:
        T - The bean type class
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • findProxyTargetMethod

        public <T,​R> java.util.Optional<ExecutableMethod<T,​R>> findProxyTargetMethod​(@NonNull
                                                                                                 io.micronaut.core.type.Argument<T> beanType,
                                                                                                 Qualifier<T> qualifier,
                                                                                                 @NonNull
                                                                                                 java.lang.String method,
                                                                                                 java.lang.Class... arguments)
        Description copied from interface: ExecutionHandleLocator
        Finds the original unproxied method for a ProxyBeanDefinition.
        Specified by:
        findProxyTargetMethod in interface ExecutionHandleLocator
        Type Parameters:
        T - The bean type class
        R - The result type of the execution handle
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        method - The method
        arguments - The arguments
        Returns:
        The execution handle
      • registerBeanDefinition

        @NonNull
        public <B> BeanContext registerBeanDefinition​(@NonNull
                                                      RuntimeBeanDefinition<B> definition)
        Description copied from interface: BeanDefinitionRegistry
        Registers a new reference at runtime. Not that registering beans can impact the object graph therefore should this should be done as soon as possible prior to the creation of other beans preferably with a high priority Context scope bean.
        Specified by:
        registerBeanDefinition in interface BeanDefinitionRegistry
        Type Parameters:
        B - The bean type
        Parameters:
        definition - The reference.
        Returns:
        The registry
      • getBean

        @NonNull
        public <T> T getBean​(@Nullable
                             BeanResolutionContext resolutionContext,
                             @NonNull
                             java.lang.Class<T> beanType)
        Get a bean of the given type.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanType - The bean type
        Returns:
        The found bean
      • getBean

        @NonNull
        public <T> T getBean​(@NonNull
                             BeanDefinition<T> definition)
        Description copied from interface: BeanLocator
        Obtains a Bean for the given bean definition.
        Specified by:
        getBean in interface BeanLocator
        Type Parameters:
        T - The bean type parameter
        Parameters:
        definition - The bean type
        Returns:
        An instanceof said bean
        See Also:
        Qualifiers
      • getBean

        @NonNull
        public <T> T getBean​(@Nullable
                             BeanResolutionContext resolutionContext,
                             @NonNull
                             java.lang.Class<T> beanType,
                             @Nullable
                             Qualifier<T> qualifier)
        Get a bean of the given type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found bean
      • getBean

        @NonNull
        public <T> T getBean​(@Nullable
                             BeanResolutionContext resolutionContext,
                             @NonNull
                             io.micronaut.core.type.Argument<T> beanType,
                             @Nullable
                             Qualifier<T> qualifier)
        Get a bean of the given type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found bean
        Since:
        3.0.0
      • getBean

        @Internal
        @NonNull
        public <T> T getBean​(@Nullable
                             BeanResolutionContext resolutionContext,
                             @NonNull
                             BeanDefinition<T> beanDefinition,
                             @NonNull
                             io.micronaut.core.type.Argument<T> beanType,
                             @Nullable
                             Qualifier<T> qualifier)
        Get a bean of the given bean definition, type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanDefinition - The bean definition
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found bean
        Since:
        3.5.0
      • findBean

        @NonNull
        public <T> java.util.Optional<T> findBean​(@Nullable
                                                  BeanResolutionContext resolutionContext,
                                                  @NonNull
                                                  java.lang.Class<T> beanType,
                                                  @Nullable
                                                  Qualifier<T> qualifier)
        Find an optional bean of the given type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found bean wrapped as an Optional
      • findBean

        @Internal
        @NonNull
        public <T> java.util.Optional<T> findBean​(@Nullable
                                                  BeanResolutionContext resolutionContext,
                                                  @NonNull
                                                  io.micronaut.core.type.Argument<T> beanType,
                                                  @Nullable
                                                  Qualifier<T> qualifier)
        Find an optional bean of the given type and qualifier.
        Type Parameters:
        T - The bean type parameter
        Parameters:
        resolutionContext - The bean context resolution
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        The found bean wrapped as an Optional
        Since:
        3.0.0
      • publishEvent

        public void publishEvent​(@NonNull
                                 java.lang.Object event)
        Description copied from interface: BeanContext
        Publish the given event. The event will be published synchronously and only return once all listeners have consumed the event.
        Specified by:
        publishEvent in interface ApplicationEventPublisher<java.lang.Object>
        Specified by:
        publishEvent in interface BeanContext
        Parameters:
        event - The event to publish
      • publishEventAsync

        @NonNull
        public java.util.concurrent.Future<java.lang.Void> publishEventAsync​(@NonNull
                                                                             java.lang.Object event)
        Description copied from interface: BeanContext
        Publish the given event. The event will be published asynchronously. A future is returned that can be used to check whether the event completed successfully or not.
        Specified by:
        publishEventAsync in interface ApplicationEventPublisher<java.lang.Object>
        Specified by:
        publishEventAsync in interface BeanContext
        Parameters:
        event - The event to publish
        Returns:
        A future that completes when the event is published
      • findProxyBeanDefinition

        @NonNull
        public <T> java.util.Optional<BeanDefinition<T>> findProxyBeanDefinition​(@NonNull
                                                                                 java.lang.Class<T> beanType,
                                                                                 @Nullable
                                                                                 Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Obtain the proxy BeanDefinition for the bean of type and qualifier.
        Specified by:
        findProxyBeanDefinition in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The type
        qualifier - The qualifier
        Returns:
        An Optional of the bean definition
      • findProxyBeanDefinition

        @NonNull
        public <T> java.util.Optional<BeanDefinition<T>> findProxyBeanDefinition​(@NonNull
                                                                                 io.micronaut.core.type.Argument<T> beanType,
                                                                                 @Nullable
                                                                                 Qualifier<T> qualifier)
        Description copied from interface: BeanDefinitionRegistry
        Obtain the proxy BeanDefinition for the bean of type and qualifier.
        Specified by:
        findProxyBeanDefinition in interface BeanDefinitionRegistry
        Type Parameters:
        T - The concrete type
        Parameters:
        beanType - The type
        qualifier - The qualifier
        Returns:
        An Optional of the bean definition
      • invalidateCaches

        @Internal
        protected void invalidateCaches()
        Invalidates the bean caches. For testing only.
      • resolveBeanDefinitionReferences

        @NonNull
        protected java.util.List<BeanDefinitionReference> resolveBeanDefinitionReferences()
        Resolves the BeanDefinitionReference class instances. Default implementation uses ServiceLoader pattern.
        Returns:
        The bean definition classes
      • resolveBeanDefinitionReferences

        @NonNull
        @Deprecated
        protected java.util.List<BeanDefinitionReference> resolveBeanDefinitionReferences​(@Nullable
                                                                                          java.util.function.Predicate<BeanDefinitionReference> predicate)
        Deprecated.
        Resolves the BeanDefinitionReference class instances. Default implementation uses ServiceLoader pattern.
        Parameters:
        predicate - The filter predicate, can be null
        Returns:
        The bean definition classes
      • resolveBeanConfigurations

        @NonNull
        protected java.lang.Iterable<BeanConfiguration> resolveBeanConfigurations()
        Resolves the BeanConfiguration class instances. Default implementation uses ServiceLoader pattern.
        Returns:
        The bean definition classes
      • initializeEventListeners

        protected void initializeEventListeners()
        Initialize the event listeners.
      • findBeanCandidates

        @NonNull
        protected <T> java.util.Collection<BeanDefinition<T>> findBeanCandidates​(@NonNull
                                                                                 java.lang.Class<T> beanType,
                                                                                 @Nullable
                                                                                 BeanDefinition<?> filter)
        Find bean candidates for the given type.
        Type Parameters:
        T - The bean generic type
        Parameters:
        beanType - The bean type
        filter - A bean definition to filter out
        Returns:
        The candidates
      • findBeanCandidates

        @NonNull
        protected <T> java.util.Collection<BeanDefinition<T>> findBeanCandidates​(@Nullable
                                                                                 BeanResolutionContext resolutionContext,
                                                                                 @NonNull
                                                                                 io.micronaut.core.type.Argument<T> beanType,
                                                                                 @Nullable
                                                                                 BeanDefinition<?> filter,
                                                                                 boolean filterProxied)
        Find bean candidates for the given type.
        Type Parameters:
        T - The bean generic type
        Parameters:
        resolutionContext - The current resolution context
        beanType - The bean type
        filter - A bean definition to filter out
        filterProxied - Whether to filter out bean proxy targets
        Returns:
        The candidates
      • findBeanCandidates

        @NonNull
        protected <T> java.util.Collection<BeanDefinition<T>> findBeanCandidates​(@Nullable
                                                                                 BeanResolutionContext resolutionContext,
                                                                                 @NonNull
                                                                                 io.micronaut.core.type.Argument<T> beanType,
                                                                                 boolean filterProxied,
                                                                                 java.util.function.Predicate<BeanDefinition<T>> predicate)
        Find bean candidates for the given type.
        Type Parameters:
        T - The bean generic type
        Parameters:
        resolutionContext - The current resolution context
        beanType - The bean type
        filterProxied - Whether to filter out bean proxy targets
        predicate - The predicate to filter candidates
        Returns:
        The candidates
      • transformIterables

        protected <T> java.util.Collection<BeanDefinition<T>> transformIterables​(BeanResolutionContext resolutionContext,
                                                                                 java.util.Collection<BeanDefinition<T>> candidates,
                                                                                 boolean filterProxied)
        Method that transforms iterable candidates if possible.
        Type Parameters:
        T - The bean type
        Parameters:
        resolutionContext - The resolution context
        candidates - The candidates.
        filterProxied - Whether to filter proxied.
        Returns:
        The candidates
      • findBeanCandidatesForInstance

        @NonNull
        protected <T> java.util.Collection<BeanDefinition> findBeanCandidatesForInstance​(@NonNull
                                                                                         T instance)
        Find bean candidates for the given type.
        Type Parameters:
        T - The bean generic type
        Parameters:
        instance - The bean instance
        Returns:
        The candidates
      • registerConfiguration

        protected void registerConfiguration​(@NonNull
                                             BeanConfiguration configuration)
        Registers an active configuration.
        Parameters:
        configuration - The configuration to register
      • doCreateBean

        @Internal
        @NonNull
        @Deprecated
        protected <T> T doCreateBean​(@NonNull
                                     BeanResolutionContext resolutionContext,
                                     @NonNull
                                     BeanDefinition<T> beanDefinition,
                                     @Nullable
                                     Qualifier<T> qualifier,
                                     boolean isSingleton,
                                     @Nullable
                                     java.util.Map<java.lang.String,​java.lang.Object> argumentValues)
        Execution the creation of a bean. The returned value can be null if a factory method returned null.
        Type Parameters:
        T - The bean generic type
        Parameters:
        resolutionContext - The BeanResolutionContext
        beanDefinition - The BeanDefinition
        qualifier - The Qualifier
        isSingleton - Whether the bean is a singleton
        argumentValues - Any argument values passed to create the bean
        Returns:
        The created bean
      • doCreateBean

        @Internal
        @NonNull
        @Deprecated
        protected <T> T doCreateBean​(@NonNull
                                     BeanResolutionContext resolutionContext,
                                     @NonNull
                                     BeanDefinition<T> beanDefinition,
                                     @Nullable
                                     Qualifier<T> qualifier,
                                     @Nullable
                                     io.micronaut.core.type.Argument<T> qualifierBeanType,
                                     boolean isSingleton,
                                     @Nullable
                                     java.util.Map<java.lang.String,​java.lang.Object> argumentValues)
        Execution the creation of a bean. The returned value can be null if a factory method returned null.

        Method is deprecated since it doesn't do anything related to the singleton.

        Type Parameters:
        T - The bean generic type
        Parameters:
        resolutionContext - The BeanResolutionContext
        beanDefinition - The BeanDefinition
        qualifier - The Qualifier
        qualifierBeanType - The bean type used in the qualifier
        isSingleton - Whether the bean is a singleton
        argumentValues - Any argument values passed to create the bean
        Returns:
        The created bean
      • findConcreteCandidate

        @NonNull
        protected <T> BeanDefinition<T> findConcreteCandidate​(@NonNull
                                                              java.lang.Class<T> beanType,
                                                              @Nullable
                                                              Qualifier<T> qualifier,
                                                              @NonNull
                                                              java.util.Collection<BeanDefinition<T>> candidates)
        Fall back method to attempt to find a candidate for the given definitions.
        Type Parameters:
        T - The generic time
        Parameters:
        beanType - The bean type
        qualifier - The qualifier
        candidates - The candidates, always more than 1
        Returns:
        The concrete bean definition
      • processParallelBeans

        protected void processParallelBeans​(java.util.List<BeanDefinitionReference> parallelBeans)
        Processes parallel bean definitions.
        Parameters:
        parallelBeans - The parallel beans
      • getBeanRegistration

        @Internal
        public <T> BeanRegistration<T> getBeanRegistration​(@Nullable
                                                           BeanResolutionContext resolutionContext,
                                                           @NonNull
                                                           io.micronaut.core.type.Argument<T> beanType,
                                                           @Nullable
                                                           Qualifier<T> qualifier)
        Obtains the bean registration for the given type and qualifier.
        Type Parameters:
        T - The generic type
        Parameters:
        resolutionContext - The resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        A BeanRegistration
      • getBeanRegistrations

        @Internal
        public <T> java.util.Collection<BeanRegistration<T>> getBeanRegistrations​(@Nullable
                                                                                  BeanResolutionContext resolutionContext,
                                                                                  @NonNull
                                                                                  io.micronaut.core.type.Argument<T> beanType,
                                                                                  @Nullable
                                                                                  Qualifier<T> qualifier)
        Obtains the bean registrations for the given type and qualifier.
        Type Parameters:
        T - The generic type
        Parameters:
        resolutionContext - The resolution context
        beanType - The bean type
        qualifier - The qualifier
        Returns:
        A collection of BeanRegistration
      • getAttributes

        @NonNull
        public io.micronaut.core.convert.value.MutableConvertibleValues<java.lang.Object> getAttributes()
        Specified by:
        getAttributes in interface io.micronaut.core.attr.AttributeHolder
        Specified by:
        getAttributes in interface io.micronaut.core.attr.MutableAttributeHolder
      • getAttribute

        @NonNull
        public java.util.Optional<java.lang.Object> getAttribute​(java.lang.CharSequence name)
        Specified by:
        getAttribute in interface io.micronaut.core.attr.AttributeHolder
      • getAttribute

        @NonNull
        public <T> java.util.Optional<T> getAttribute​(java.lang.CharSequence name,
                                                      java.lang.Class<T> type)
        Specified by:
        getAttribute in interface io.micronaut.core.attr.AttributeHolder
      • setAttribute

        @NonNull
        public BeanContext setAttribute​(@NonNull
                                        java.lang.CharSequence name,
                                        @Nullable
                                        java.lang.Object value)
        Specified by:
        setAttribute in interface io.micronaut.core.attr.MutableAttributeHolder
      • removeAttribute

        @NonNull
        public <T> java.util.Optional<T> removeAttribute​(@NonNull
                                                         java.lang.CharSequence name,
                                                         @NonNull
                                                         java.lang.Class<T> type)
        Specified by:
        removeAttribute in interface io.micronaut.core.attr.MutableAttributeHolder