我有很多实体(超过1000个),但我需要特定实体的侦听器/拦截器/事件(70-80)。我不想根据拦截器中的if else条件进行检查,因为它会使代码变脏。
spring / Hibernate中是否有任何注释或接口仅侦听该注释。
答案 0 :(得分:1)
引入标记接口(无方法)并将其添加到所有实体。
在拦截器的方法中,只需检查
public boolean onSave(Object entity,Serializable id,
Object[] state,String[] propertyNames,Type[] types)
throws CallbackException {
System.out.println("onSave");
if (entity instanceof IMarkerInterface){
doSomethingWith(entity);
}
return false;
}
或者您可以为实体添加自定义注释并使用entity.getClass().getClass().getAnnotation(MarkerAnnotation.class)
。只需检查注释是否存在并相应地应用您的逻辑。