Spring Data Neo4J和CDI

时间:2015-02-02 12:19:57

标签: spring neo4j spring-data 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 Data和CDI设置Neo4j并且可以提供一个示例,我如何为CDI设置Spring配置以及如何使@Inject可以访问存储库?请考虑一下我在Spring Data和Neo4J主题中的新功能;) 提前谢谢!

Joern

1 个答案:

答案 0 :(得分:0)

至少我找到了似乎有用的东西。我扩展了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);
}

现在可以使用@Inject注入PersonRepository。

感谢this张贴!!!