Spring Data Neo4J and CDI



我按照本教程设置了Spring Data Neo4J:http://spring.io/guides/gs/accessing-data-neo4j/并稍微更改了一下以在Neo4J服务器上使用它,并且运行良好。

然后我试图找到一个例子,如何在CDI环境中使用存储库,如这些例子中所述 http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpd.misc.cdi-integration:

只是,我找不到任何我必须提供的示例才能使用 Neo4J 运行此内容。

所以我的问题是:有没有人尝试使用 Spring 数据和 CDI 设置 Neo4j,并且可以提供一个示例,我必须如何为 CDI 设置 Spring 配置以及如何使存储库可供@Inject访问?请注意,我在Spring Data和Neo4J主题中很新;)提前感谢!

乔恩

至少我找到了一些似乎有效的东西。我扩展了 Neo4JConfiguration 以设置 Neo4J 服务器连接。在此类中,我还生成所需的存储库。存储库本身必须用@NoRepositoryBean注释

public class MyNeo4JConfiguration extends Neo4jConfiguration {
GraphDatabaseService graphDatabaseService() {
    return new SpringRestGraphDatabase("http://localhost:7474/db/data");
}
public GraphDatabase graphDatabase() {
    if (graphDatabaseService() instanceof GraphDatabase)
        return (GraphDatabase) graphDatabaseService();
    return new DelegatingGraphDatabase(graphDatabaseService());
}
@Produces
PersonRepository getPersonRepository() {
    GraphRepositoryFactory factory;
    try {
        factory = new GraphRepositoryFactory(new Neo4jTemplate(
                this.graphDatabase()), this.neo4jMappingContext());
        PersonRepository personRepository = factory
                .getRepository(PersonRepository.class);
        return personRepository;
    } catch (Exception e) {
        return null;
    }
}

存储库 :

@NoRepositoryBean
public interface PersonRepository extends GraphRepository<Person> {
    Person findByName(String name);
    Iterable<Person> findByTeammatesName(String name);
}

现在可以将 PersonRepository 注入@Inject。

感谢这篇文章!!

最新更新