且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法解析类型为xxx的任何bean;限定词:[@ javax.enterprise.inject.Any()]

更新时间:2022-06-22 23:57:32

我将注释 @ApplicationScoped 添加到LoginProvider1Impl和LoginProvider2Impl。

另一种使其工作的方法是修改工厂方法:

I added the annotation @ApplicationScoped to LoginProvider1Impl and LoginProvider2Impl.
Another way to make it work is to modify the factory method:

@ApplicationScoped
public class LoginProviderFactory {

    @Produces
    @LoginProviderProducer
    public LoginProvider createLoginProvider(@Any Instance<LoginProvider> instance, InjectionPoint injectionPoint) {
        Annotated annotated = injectionPoint.getAnnotated();
        LoginProviderType loginProviderTypeAnnotation = annotated.getAnnotation(LoginProviderType.class);
        Class<? extends LoginProvider> loginProviderType = loginProviderTypeAnnotation.value().getLoginProviderType();
        //return instance.select(loginProviderType).get();
        if (loginProviderType == LoginProvider1Impl.class) {
            return new LoginProvider1Impl();
        } else if (loginProviderType == LoginProvider2Impl.class) {
            return new LoginProvider2Impl();
        } else
            return null;
    }
}