ConstructorOrFactoryMethodResolver supports type various constructor argument types such as by-name references through inspecting BeanReference. It would be neat to also support RuntimeBeanReference with a Class argument to lookup beans by their type rather than just the type name. Having by-type references that work similar to the non-AOT runtime arrangement would simplify bean definitions.

FWIW, a RuntimeBeanReference leads to the following exception:

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.data.mongodb.core.mapping.MongoMappingContext' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:862)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:691)
    at org.springframework.beans.factory.aot.ConstructorOrFactoryMethodResolver.determineParameterValueType(ConstructorOrFactoryMethodResolver.java:137)
    at org.springframework.beans.factory.aot.ConstructorOrFactoryMethodResolver.determineParameterValueTypes(ConstructorOrFactoryMethodResolver.java:125)
    at org.springframework.beans.factory.aot.ConstructorOrFactoryMethodResolver.resolve(ConstructorOrFactoryMethodResolver.java:84)
    at org.springframework.beans.factory.aot.ConstructorOrFactoryMethodResolver.resolve(ConstructorOrFactoryMethodResolver.java:436)
    at org.springframework.beans.factory.aot.BeanDefinitionMethodGenerator.<init>(BeanDefinitionMethodGenerator.java:73)
    at org.springframework.beans.factory.aot.BeanDefinitionMethodGeneratorFactory.getBeanDefinitionMethodGenerator(BeanDefinitionMethodGeneratorFactory.java:91)
    at org.springframework.beans.factory.aot.BeanRegistrationsAotProcessor.processAheadOfTime(BeanRegistrationsAotProcessor.java:44)
    at org.springframework.beans.factory.aot.BeanRegistrationsAotProcessor.processAheadOfTime(BeanRegistrationsAotProcessor.java:32)
    at org.springframework.context.aot.BeanFactoryInitializationAotContributions.getContributions(BeanFactoryInitializationAotContributions.java:67)
    at org.springframework.context.aot.BeanFactoryInitializationAotContributions.<init>(BeanFactoryInitializationAotContributions.java:49)
    at org.springframework.context.aot.BeanFactoryInitializationAotContributions.<init>(BeanFactoryInitializationAotContributions.java:44)
    at org.springframework.context.aot.ApplicationContextAotGenerator.generateApplicationContext(ApplicationContextAotGenerator.java:53)
    at org.springframework.boot.AotProcessor.performAotProcessing(AotProcessor.java:150)
    at org.springframework.boot.AotProcessor.process(AotProcessor.java:111)
    at org.springframework.boot.AotProcessor.main(AotProcessor.java:221)