【发布时间】:2014-04-17 14:01:59
【问题描述】:
我正在使用 Spring Data 1.5 和审计。 AuditingEntityListener 的一部分有一个setAuditingHandler 方法。
如何自定义 AuditingHandler 并指示 Spring-Data 注入我的自定义处理程序而不是默认的 org.springframework.data.auditing.AuditingHandler?
我尝试实例化我自己的AuditingEntityListener,在其中注入我自己的处理程序,但这并没有起到作用。默认处理程序仍在注入中。我已经尝试过通过 XML 配置和 JavaConfig 来查看一个是否比另一个工作得更好,但两种方法都行不通。
Java配置:
@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;
}
}
我的自定义处理程序:
@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);
}
}
我做错了什么?使用我的 JavaConfig,我什至看不到 Spring 使用我的配置实例化侦听器。或者,我尝试使用 XML 配置来配置监听器,但默认监听器仍然是使用的那个。
<!-- 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>
任何建议都会有所帮助。
【问题讨论】:
-
是的,使用 Spring 的架构你可以!
-
@shazin 您能否提供更多详细信息?我不知道在哪里/如何指定我的自定义处理程序而不是默认处理程序。
标签: java spring spring-data spring-data-jpa audit