Package io.quarkus.arc.lookup
Annotation Interface LookupIfProperty
@Repeatable(List.class)
@Retention(RUNTIME)
@Target({METHOD,TYPE,FIELD})
public @interface LookupIfProperty
Indicates that a bean should only be obtained by programmatic lookup if the property matches the provided value.
This annotation is repeatable. A bean will be included if all the conditions defined by the LookupIfProperty
and
LookupUnlessProperty
annotations are satisfied.
interface Service {
String name();
}
@LookupIfProperty(name = "service.foo.enabled", stringValue = "true")
@ApplicationScoped
class ServiceFoo implements Service {
public String name() {
return "foo";
}
}
@ApplicationScoped
class ServiceBar {
public String name() {
return "bar";
}
}
@ApplicationScoped
class Client {
@Inject
Instance<Service> service;
void printServiceName() {
// This would print "bar" if the property of name "service.foo.enabled" was set to false
// Note that service.get() would normally result in AmbiguousResolutionException
System.out.println(service.get().name());
}
}
- See Also:
-
Instance
-
Nested Class Summary
Nested Classes -
Required Element Summary
Required ElementsModifier and TypeRequired ElementDescriptionName of the runtime property to checkExpectedString
value of the runtime property (specified byname
) if the bean should be looked up at runtime. -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionboolean
Determines if the bean is to be looked up when the property name specified byname
has not been specified at all
-
Element Details
-
-
lookupIfMissing
boolean lookupIfMissingDetermines if the bean is to be looked up when the property name specified byname
has not been specified at all- Default:
- false
-