When using lookup method injection, collections do not work as they do for other injection points (e.g. constructor, setter). For example, the following fails in Spring Boot with the error A component required a bean of type util.function.Supplier' that could not be found.:

@Component
public class ExtensionCaller implements ApplicationRunner {

    @Lookup
    public List<Supplier<String>> suppliers() {
        return List.of();
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        suppliers();
    }
}

I would've expected that calling the method would work, returning all beans of type Supplier<String>.

Comment From: snicoll

I would've expected that calling the method would work, returning all beans of type Supplier.

Unfortunately, that's not the case. @Lookup is really about a getBean whereas Collection<X> is syntactic sugar for the injection point (or getBeans).