Ich verwende Spring Data 1.5 und Auditing. Teil der AuditingEntityListener
hat eine setAuditingHandler
Methode.Wie kann ich den von Spring-Data injizierten AuditingHandler anpassen, wenn ich Auditing verwende?
Wie kann ich die AuditingHandler
anpassen und Spring-Data anweisen, meine benutzerdefinierte Handler statt der Standard org.springframework.data.auditing.AuditingHandler
injizieren?
Ich habe versucht, meine eigene AuditingEntityListener
Instantiierung, in der ich meine eigenen Handler injizieren, aber das macht nicht die Arbeit. Der Standardhandler wird noch immer injiziert. Ich habe sowohl über XML-Konfiguration als auch JavaConfig versucht, um zu sehen, ob einer besser funktioniert als der andere, aber keiner von beiden funktioniert.
JavaConfig:
@Configuration
@EnableJpaAuditing(auditorAwareRef="auditorProvider")
public class AppConfig {
@Bean
public AuditorAware<User> auditorProvider(){
return new SpringSecurityAuditorAware();
}
@Bean
public AuditingEntityListener auditingEntityListener(){
AuditingEntityListener listener = new AuditingEntityListener();
listener.setAuditingHandler(new com.ia.persistence.AuditingHandler());
return listener;
}
}
Meine benutzerdefinierten Handler:
@Component
public class AuditingHandler extends org.springframework.data.auditing.AuditingHandler {
// SLF4J logger
private static final Logger logger = LoggerFactory.getLogger(AuditingHandler.class);
/* (non-Javadoc)
* @see org.springframework.data.auditing.AuditingHandler#markCreated(java.lang.Object)
*/
@Override
public void markCreated(Object source) {
logger.info("Custom handler");
super.markCreated(source);
}
/* (non-Javadoc)
* @see org.springframework.data.auditing.AuditingHandler#markModified(java.lang.Object)
*/
@Override
public void markModified(Object source) {
logger.info("Custom handler");
super.markModified(source);
}
}
Was mache ich falsch? Mit meiner JavaConfig sehe ich nicht, dass Spring den Listener mit meiner Konfiguration instanziiert. Alternativ habe ich versucht, den Listener mithilfe der XML-Konfiguration zu konfigurieren, aber der Standard-Listener wird immer noch verwendet.
<!-- enable Spring data-JPA repositories -->
<jpa:repositories base-package="com.ia" />
<bean id="auditingEntityListener" class="org.springframework.data.jpa.domain.support.AuditingEntityListener">
<property name="auditingHandler" ref="auditingHandler"/>
</bean>
Alle Vorschläge wären hilfreich.
Ja, mit Architektur Spring Sie können! – shazin
@shazin Können Sie bitte zusätzliche Details angeben? Ich kann nicht herausfinden, wo/wie ich meine benutzerdefinierte Handler anstelle der Standardhandler angeben. –