不为Neo4j存储库调用@RepositoryEventHandler事件

时间:2014-12-12 02:35:21

标签: java spring spring-data spring-data-neo4j

我编写了一个RepositoryEventHandler来处理Spring Data Neo4j。我已经尝试了很多不同的配置方法,但我似乎无法解决任何事件。用户数据已成功保存,但未生成任何日志或命中断点。我确信@Beans是由于启动期间产生的一些早期错误而加载的(缺少我自那以后的库)。

代码和配置如下......

@RepositoryEventHandler:

package com.test.repository.handler;

@Component
@RepositoryEventHandler(User.class)
public class UserEventHandler {

    private Log logger = LogFactory.getLog(getClass());

    @HandleBeforeSave
    public void handleBeforeSave(User user) {
        logger.debug("handle before save for " + user.getId());
    }

    @HandleBeforeCreate
    public void handleBeforeCreate(User user) {
        logger.debug("saved user " + user.getId());
    }

    @HandleAfterDelete
    public void handleAfterDelete(User user) {
        logger.debug("deleted user " + user.getId());
    }

}

RepositoryConfiguration

package com.test.config;

@Configuration
public class RepositoryConfiguration {

    @Bean
    UserEventHandler userEventHandler() {
        return new UserEventHandler();
    }

    @Bean
    AnnotatedHandlerRepositoryEventListener repositoryEventListener() {
        return new AnnotatedHandlerRepositoryEventListener(
            "com.test.repository.handler");
    }

}

UserRepository:

package com.test.repository;

public interface UserRepository extends PagingAndSortingRepository<User, Long> {

    User findById(Long id);
}

当我寻找这个问题的解决方案时,我没有发现任何暗示@RepositoryEventHandler不能与Neo4j数据存储库一起使用的东西。我错过了什么吗?

以下是我正在使用的相关版本:

compile 'org.springframework.data:spring-data-rest-webmvc:2.2.1.RELEASE'
compile 'org.springframework.data:spring-data-neo4j:3.2.1.RELEASE'               
compile 'org.springframework.data:spring-data-neo4j-rest:3.2.1.RELEASE' 
compile 'org.springframework.data:spring-data-rest-repository:1.0.0.RELEASE'
compile 'com.google.guava:guava:r05'

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试注释userRepository&#34; @ RepositoryRestResource&#34; e.g

@RepositoryRestResource(collectionResourceRel = "users", path = "users")

如果这些是用户的路径。

应该针对其余存储库的其他调用调用处理程序方法,而不仅仅是应用程序中的任意crud调用。例如,如果您在应用启动期间创建了一堆用户,那么内联调用将不会调用处理程序。