Annotation Type ExcludeBeanClasses


  • @Retention(RUNTIME)
    @Target(TYPE)
    @Inherited
    @Repeatable(All.class)
    public @interface ExcludeBeanClasses
    @ExcludeBeanClasses excludes a set of classes with bean defining annotations (e.g. scopes) from automatic discovery. This can be helpful to allow replacing bean classes with a different implementation, typically a mock.

    This annotation works as an inverse of AddBeanClasses hence usually requires actual bean implementation classes as parameters.

    NOTE: This annotation will only exclude beans defined by class annotations. It will not exclude beans of the specified type that are defined by Produces producer methods / fields or synthetic beans.

    Example:

     @EnableAutoWeld
     @ExcludeBeanClasses(Foo.class) // Excludes Foo bean class from automatic discovery
     class TestSomeFoo {
    
         @Inject
         SomeFoo someFoo; // SomeFoo depends upon application scoped bean Foo
    
         @Produces
         Foo mockFoo = mock(Foo.class); // mockFoo is now produced in place of original Foo impl
    
         @Test
         void test(Foo myFoo) {
             assertNotNull(myFoo);
             assertEquals(myFoo.getBar(), "mock-foo");
         }
     }
     
    See Also:
    ExcludeBean
    • Required Element Summary

      Required Elements 
      Modifier and Type Required Element Description
      Class<?>[] value  
    • Element Detail

      • value

        Class<?>[] value