Partial beans allow you to implement a generic handler to replace manual implementations of interfaces (or abstract classes).
@PartialBeanBinding
is the binding-annotation for creating a custom interface (/abstract class) to generic handler binding.
@PartialBeanBinding @Retention(RUNTIME) @Target(TYPE) public @interface MyPartialBeanBinding {} @MyPartialBeanBinding //scope is optional public interface PartialBean { String getValue(); } @MyPartialBeanBinding @Dependent public class MyPartialBeanHandler implements java.lang.reflect.InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //generic handler logic } }
Using an abstract class as partial-bean requires javassist as an additional dependency and allows to implement some methods manually.
Attention: Currently CDI-Interceptors can't be used for partial-beans.