registerInstance<T extends Object> method

void registerInstance<T extends Object>(
  1. T instance, {
  2. String? name,
  3. String? qualifier,
  4. List<String> profiles = const [],
  5. bool isPrimary = false,
})

Registers an existing instance as a singleton bean

Implementation

void registerInstance<T extends Object>(
  T instance, {
  String? name,
  String? qualifier,
  List<String> profiles = const [],
  bool isPrimary = false,
}) {
  if (!_isProfileActive(profiles)) return;

  final beanName = name ?? qualifier ?? T.toString();
  final beanDef = BeanDefinition(
    type: T,
    name: beanName,
    factory: () => instance,
    qualifier: qualifier,
    profiles: profiles,
    isPrimary: isPrimary,
  );

  // Cache the instance immediately
  _singletonCache[beanName] = instance;

  // Register the definition
  _beanRegistry.putIfAbsent(T, () => []).add(beanDef);
  if (beanName != T.toString()) {
    _namedBeanRegistry[beanName] = beanDef;
  }
}