更新时间: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;
}
}