Поскольку экземпляр CustomRevisionListener создается конструктором в Envers, вам нужно найти другой способ получения дескриптора для управляемого bean-компонента Spring.
Вы можете создать служебный класс для достижения этой цели:
/**
* Utility class which provides lookup services for Spring managed beans from
* within unmanaged beans.
*/
@Component
public class ContextLookup implements ApplicationContextAware {
private static ApplicationContext sApplicationContext;
@Override
public void setApplicationContext( ApplicationContext aApplicationContext )
throws BeansException {
setContext( aApplicationContext );
}
public static void setContext( ApplicationContext aApplicationContext ) {
sApplicationContext = aApplicationContext;
}
protected static ApplicationContext getApplicationContext() {
return sApplicationContext;
}
public static Object getBean( String aName ) {
if ( sApplicationContext != null ) {
return sApplicationContext.getBean( aName );
}
return null;
}
public static <T> T getBean( Class<T> aClass ) {
if ( sApplicationContext != null ) {
return sApplicationContext.getBean( aClass );
}
return null;
}
}
и в вашем CustomRevisionListener
public class CustomRevisionListener {
public void myMethod() {
..
// get a handle to your spring managed bean
Foo foo = (Foo)ContextLookup.getBean( "mySpringManagedBean" );
..
}
}