Retain Your CDI Qualifiers
The CDI specifications is very clear in its definition of qualifiers:
A qualifier type is a Java annotation defined as
@Target({METHOD, FIELD, PARAMETER, TYPE})
and@Retention(RUNTIME)
.
Of particular importance is the @Retention
information: with the default retention, CLASS
, a container's behaviour is undefined. I discovered this critical detail when creating an integration test with Spring's SpringJUnit4ClassRunner
: the injection point behaved as if it was unqualified (and, technically, it was), even though the main application behaved correctly.