Class DefaultApplicationContext

java.lang.Object
io.micronaut.context.DefaultBeanContext
io.micronaut.context.DefaultApplicationContext
All Implemented Interfaces:
ApplicationContext, BeanContext, BeanDefinitionRegistry, BeanLocator, PropertyPlaceholderResolver, ApplicationEventPublisher<Object>, ExecutionHandleLocator, InitializableBeanContext, LifeCycle<BeanContext>, io.micronaut.core.annotation.AnnotationMetadataResolver, io.micronaut.core.attr.AttributeHolder, io.micronaut.core.attr.MutableAttributeHolder, io.micronaut.core.convert.ConversionServiceProvider, io.micronaut.core.value.PropertyResolver, io.micronaut.core.value.ValueResolver<String>, Closeable, AutoCloseable

public class DefaultApplicationContext extends DefaultBeanContext implements ApplicationContext
Creates a default implementation of the ApplicationContext interface.
Since:
1.0
  • Constructor Details

    • DefaultApplicationContext

      public DefaultApplicationContext(@NonNull @NonNull String... environmentNames)
      Construct a new ApplicationContext for the given environment name.
      Parameters:
      environmentNames - The environment names
    • DefaultApplicationContext

      public DefaultApplicationContext(@NonNull @NonNull io.micronaut.core.io.scan.ClassPathResourceLoader resourceLoader, @NonNull @NonNull String... environmentNames)
      Construct a new ApplicationContext for the given environment name and classloader.
      Parameters:
      environmentNames - The environment names
      resourceLoader - The class loader
    • DefaultApplicationContext

      public DefaultApplicationContext(@NonNull @NonNull ApplicationContextConfiguration configuration)
      Construct a new ApplicationContext for the given environment name and classloader.
      Parameters:
      configuration - The application context configuration
  • Method Details

    • registerSingleton

      @NonNull public <T> @NonNull ApplicationContext registerSingleton(@NonNull @NonNull Class<T> type, @NonNull T singleton, @Nullable @Nullable 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 ApplicationContext
      Specified by:
      registerSingleton in interface BeanContext
      Specified by:
      registerSingleton in interface BeanDefinitionRegistry
      Overrides:
      registerSingleton in class DefaultBeanContext
      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
    • createEnvironment

      @NonNull protected @NonNull Environment createEnvironment(@NonNull @NonNull ApplicationContextConfiguration configuration)
      Creates the default environment for the given environment name.
      Parameters:
      configuration - The application context configuration
      Returns:
      The environment instance
    • getConversionService

      @NonNull public @NonNull io.micronaut.core.convert.MutableConversionService getConversionService()
      Specified by:
      getConversionService in interface io.micronaut.core.convert.ConversionServiceProvider
      Overrides:
      getConversionService in class DefaultBeanContext
    • getEnvironment

      @NonNull public @NonNull Environment getEnvironment()
      Specified by:
      getEnvironment in interface ApplicationContext
      Returns:
      The application environment
    • setEnvironment

      @Internal public void setEnvironment(Environment environment)
      Parameters:
      environment - The environment
    • start

      @NonNull public @NonNull ApplicationContext start()
      Description copied from class: DefaultBeanContext
      The start method will read all bean definition classes found on the classpath and initialize any pre-required state.
      Specified by:
      start in interface ApplicationContext
      Specified by:
      start in interface LifeCycle<BeanContext>
      Overrides:
      start in class DefaultBeanContext
      Returns:
      This lifecycle component
    • registerConversionService

      protected void registerConversionService()
      Description copied from class: DefaultBeanContext
      Registers conversion service.
      Overrides:
      registerConversionService in class DefaultBeanContext
    • stop

      @NonNull public @NonNull ApplicationContext stop()
      Description copied from class: DefaultBeanContext
      The close method will shut down the context calling PreDestroy hooks on loaded singletons.
      Specified by:
      stop in interface ApplicationContext
      Specified by:
      stop in interface LifeCycle<BeanContext>
      Overrides:
      stop in class DefaultBeanContext
      Returns:
      This lifecycle component
    • containsProperty

      public boolean containsProperty(String name)
      Specified by:
      containsProperty in interface io.micronaut.core.value.PropertyResolver
    • containsProperties

      public boolean containsProperties(String name)
      Specified by:
      containsProperties in interface io.micronaut.core.value.PropertyResolver
    • getProperty

      public <T> Optional<T> getProperty(String name, io.micronaut.core.convert.ArgumentConversionContext<T> conversionContext)
      Specified by:
      getProperty in interface io.micronaut.core.value.PropertyResolver
    • getPropertyEntries

      @NonNull public @NonNull Collection<String> getPropertyEntries(@NonNull @NonNull String name)
      Specified by:
      getPropertyEntries in interface io.micronaut.core.value.PropertyResolver
    • getProperties

      @NonNull public @NonNull Map<String,Object> getProperties(@Nullable @Nullable String name, @Nullable @Nullable io.micronaut.core.naming.conventions.StringConvention keyFormat)
      Specified by:
      getProperties in interface io.micronaut.core.value.PropertyResolver
    • getPropertyPathMatches

      public Collection<List<String>> getPropertyPathMatches(String pathPattern)
      Specified by:
      getPropertyPathMatches in interface io.micronaut.core.value.PropertyResolver
    • registerConfiguration

      protected void registerConfiguration(BeanConfiguration configuration)
      Description copied from class: DefaultBeanContext
      Registers an active configuration.
      Overrides:
      registerConfiguration in class DefaultBeanContext
      Parameters:
      configuration - The configuration to register
    • startEnvironment

      protected void startEnvironment()
      Start the environment.
    • initializeContext

      protected void initializeContext(List<io.micronaut.context.DefaultBeanContext.BeanDefinitionProducer> contextScopeBeans, List<io.micronaut.context.DefaultBeanContext.BeanDefinitionProducer> processedBeans, List<io.micronaut.context.DefaultBeanContext.BeanDefinitionProducer> parallelBeans)
      Description copied from class: DefaultBeanContext
      Initialize the context with the given Context scope beans.
      Overrides:
      initializeContext in class DefaultBeanContext
      Parameters:
      contextScopeBeans - The context scope beans
      processedBeans - The beans that require ExecutableMethodProcessor handling
      parallelBeans - The parallel bean definitions
    • newNoSuchBeanException

      protected <T> NoSuchBeanException newNoSuchBeanException(@Nullable @Nullable BeanResolutionContext resolutionContext, io.micronaut.core.type.Argument<T> beanType, @Nullable @Nullable Qualifier<T> qualifier, @Nullable @Nullable String message)
      Description copied from class: DefaultBeanContext
      Trigger a no such bean exception. Subclasses can improve the exception with downstream diagnosis as necessary.
      Overrides:
      newNoSuchBeanException in class DefaultBeanContext
      Type Parameters:
      T - The type of the bean
      Parameters:
      resolutionContext - The resolution context
      beanType - The bean type
      qualifier - The qualifier
      message - A message to use
      Returns:
      A no such bean exception
    • collectIterableBeans

      protected <T> void collectIterableBeans(BeanResolutionContext resolutionContext, BeanDefinition<T> iterableBean, Set<BeanDefinition<T>> targetSet)
      Description copied from class: DefaultBeanContext
      Collects iterable beans from a given iterable.
      Overrides:
      collectIterableBeans in class DefaultBeanContext
      Type Parameters:
      T - The bean type
      Parameters:
      resolutionContext - The resolution context
      iterableBean - The iterable
      targetSet - The target set
    • findConcreteCandidate

      protected <T> BeanDefinition<T> findConcreteCandidate(Class<T> beanType, Qualifier<T> qualifier, Collection<BeanDefinition<T>> candidates)
      Description copied from class: DefaultBeanContext
      Fall back method to attempt to find a candidate for the given definitions.
      Overrides:
      findConcreteCandidate in class DefaultBeanContext
      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
    • resolvePlaceholders

      public Optional<String> resolvePlaceholders(String str)
      Description copied from interface: PropertyPlaceholderResolver
      Resolve the placeholders and return an Optional String if it was possible to resolve them.
      Specified by:
      resolvePlaceholders in interface PropertyPlaceholderResolver
      Parameters:
      str - The placeholder to resolve
      Returns:
      The optional string or Optional.empty() if resolution was not possible
    • resolveRequiredPlaceholders

      public String resolveRequiredPlaceholders(String str) throws ConfigurationException
      Description copied from interface: PropertyPlaceholderResolver
      Resolve the placeholders and return a string if it was possible to resolve them.
      Specified by:
      resolveRequiredPlaceholders in interface PropertyPlaceholderResolver
      Parameters:
      str - The placeholder to resolve
      Returns:
      The resolved string
      Throws:
      ConfigurationException - If the placeholders could not be resolved
    • initializeTypeConverters

      protected void initializeTypeConverters(BeanContext beanContext)
      Parameters:
      beanContext - The bean context