hibernate-envers RevisionListener Spring интеграция как Spring bean-компонент

Мне нужно выполнить некоторую обработку базы данных в прослушивателе ревизий hibernate-envers. Для этого мне нужны интерактивные возможности Spring Framework. Как это можно реализовать? Вот код, представляющий необходимость, но CustomRevisionListener создается конструктором в коде Envers. Spring имеет только SecurityContextHolder в качестве статического локатора службы. Как внедрить другие бины?

@Service
public class CustomRevisionListener implements EntityTrackingRevisionListener {

      @Resource
      private PersistenceManagerHibernate persistenceManagerHibernate;

      public void newRevision(Object revisionEntity) {
                CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
    revision.setUsername(getUsername());
      }


      public String getUsername() {
    final SecurityContext context = SecurityContextHolder.getContext();
    if (context != null) {
        if (context.getAuthentication() != null) {
                  return context.getAuthentication().getName();
        } else {
                  return "anonymous";
        }
    }
    return "anonymous";
      }

      @Override
      public void entityChanged(@SuppressWarnings("rawtypes") Class entityClass, String entityName, Serializable entityId, RevisionType revisionType, Object revisionEntity) {
                CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
                revision.setEntityId(entityId.toString());
                revision.setEntityName(entityName);
                revision.setRevisionType((int)revisionType.getRepresentation());
                Auditable auditable = null;
                if (entityId instanceof Long) {
                          auditable = persistenceManagerHibernate.findById(entityClass, (Long)entityId);
                }
                revision.setGroupName(auditable.getAuditGroupName());
                revision.setGroupEntityId(auditable.getAuditGroupId());
      }
  }
12
задан Verbeia 15 December 2011 в 12:09
поделиться