Quarkus 不以编程方式选择 bean

Lea*_*dao 2 java cdi quarkus

我试图以编程方式选择 bean,但 quarkus 不会注入 bean 并引发异常。不支持吗?

public enum ReportType {
    ONE,
    TWO
}
Run Code Online (Sandbox Code Playgroud)
@Qualifier
@Retention(RUNTIME)
@Target({METHOD, PARAMETER, FIELD, TYPE})
@Documented
public @interface Report {

    ReportType value();

    public static final class Literal extends AnnotationLiteral<Report> implements Report {

        private final ReportType value;

        public static Literal of(ReportType value) {
            return new Literal(value);
        }

        private Literal(ReportType value) {
            this.value = value;
        }

        public ReportType value() {
            return value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
public interface CommonnInterface {
    void call();
}
Run Code Online (Sandbox Code Playgroud)
@Report(value = ReportType.ONE)
public class ReportOneBusiness implements CommonnInterface {

    @Override
    public void call() {
        System.out.println("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我们打电话时


        CommonnInterface commonnInterface = CDI.current()
                .select(
                        CommonnInterface.class,
                        Report.Literal.of(ReportType.ONE)
                ).get();

Run Code Online (Sandbox Code Playgroud)

找不到所需类型 [接口 org.business.CommonnInterface] 和限定符 [[@org.cdi.Report(value=ONE)]] 的 bean

geo*_*and 5

您可能需要使用注释使 bean 不可删除@io.quarkus.arc.Unremovable

请参阅了解更多详细信息。