Ich habe die folgende Struktur:Java CDI: Decorator mit mehreren Generika params
@Decorator
public abstract class MyDecorator<T extends BaseEntity, Q extends QueryParams> implements EntityService<T, Q> {
@Any
@Inject
@Delegate
EntityService<T, Q> delegate;
@Override
public T save(T entity) { ... }
}
Dies ist die EntityService
Interface-Deklaration:
public interface EntityService<T extends BaseEntity, Q extends QueryParams> {
T save(T entity);
void deleteById(Integer id);
void deleteAllById(List<Integer> ids);
void delete(T entity);
void deleteAll(List<T> entities);
T findById(Integer id);
QueryResultWrapper<T> query(Q parameters);
Long count(Q parameters);
}
Leider ist der Dekorateur speichern Methode nie aufgerufen werden, wenn es sein sollte , obwohl keine Fehler angezeigt werden ... Der einzige Weg, wie ich es funktionierte, war wie folgt:
@Decorator
public abstract class MyDecorator<T extends BaseEntity> implements EntityService<T> { ... }
Ohne den Q extends QueryParams
generischen Parameter.
Die MyDecorator
ist innerhalb beans.xml
deklariert.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all" version="1.1">
<decorators>
<class>fortuna.backend.comum.decorators.MyDecorator</class>
</decorators>
</beans>
Irgendwelche Hinweise?
Möglicherweise müssen Sie noch mehr Informationen bereitstellen. Ich habe versucht, einen kurzen Ausschnitt mit dem oben genannten zu machen, und es funktionierte einfach für mich (mit Weld, von dem ich vermute, dass Sie es auch verwenden). Auch in Ihrer Frage sprechen Sie von 'EntityService', Sie zeigen jedoch ein Code-Snippet mit 'CrudService'. Ist das ein Tippfehler oder gibt es eine andere generische Klasse dazwischen? – Siliarus
Ein Tippfehler, sorry, nur behoben. Wie auch immer, welche Art von zusätzlichen Informationen kann ich anbieten? –
Können Sie Ihre beans.xml-Datei bereitstellen? – hya