我按照本教程设置了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。
感谢这篇文章!!