Spring 弹簧数据座与弹簧数据Neo4J不兼容?

Spring 弹簧数据座与弹簧数据Neo4J不兼容?,spring,neo4j,spring-data,spring-data-neo4j,spring-data-rest,Spring,Neo4j,Spring Data,Spring Data Neo4j,Spring Data Rest,我试图将SpringDataREST合并到使用SpringDataNeo4j的应用程序中。当我将Spring数据Rest包含到我的应用程序中时,我在开始时遇到以下异常: 18:41:10.632 [main] INFO o.h.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete 18:41:11.280 [main] WARN o.e.j.u.component.AbstractLifeCycle - F

我试图将SpringDataREST合并到使用SpringDataNeo4j的应用程序中。当我将Spring数据Rest包含到我的应用程序中时,我在开始时遇到以下异常:

    18:41:10.632 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete
    18:41:11.280 [main] WARN  o.e.j.u.component.AbstractLifeCycle - FAILED org.springframework.boot.context.embedded.jetty.ServletContextInitializerConfiguration$Initializer@2521bcf2: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter': Injection of autowired dependencies failed; nested exception is ...

    // very long stack trace here

    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.neo4j.support.Neo4jTemplate]: Circular reference involving containing bean 'myApplication' - consider declaring the factory method as static for independence from its containing instance. Factory method 'neo4jTemplate' threw exception; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'neo4jMappingContext': Requested bean is currently in creation: Is there an unresolvable circular reference?
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        ... 277 common frames omitted
    Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'neo4jMappingContext': Requested bean is currently in creation: Is there an unresolvable circular reference?
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:285) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at io.travelnet.TravelNetApplication$$EnhancerBySpringCGLIB$$6dfc1a9a.mappingInfrastructure(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
        at org.springframework.data.neo4j.config.Neo4jConfiguration.neo4jTemplate(Neo4jConfiguration.java:136) ~[spring-data-neo4j-3.3.1.RELEASE.jar:na]
        at io.travelnet.TravelNetApplication$$EnhancerBySpringCGLIB$$6dfc1a9a.CGLIB$neo4jTemplate$83(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
        at io.travelnet.TravelNetApplication$$EnhancerBySpringCGLIB$$6dfc1a9a$$FastClassBySpringCGLIB$$484acc9c.invoke(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at io.travelnet.TravelNetApplication$$EnhancerBySpringCGLIB$$6dfc1a9a.neo4jTemplate(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_71]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_71]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_71]
        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        ... 278 common frames omitted
如果我注释掉
compile(“org.springframework.boot:springbootstarterdatarest”)
,应用程序将按预期运行

可能存在版本不匹配吗

根据Michael的请求,编辑以添加主类的配置:

@Configuration
@EnableAutoConfiguration
@EnableAsync
@EnableScheduling
@SpringBootApplication
@EnableNeo4jRepositories(basePackages = "com.me.graph")
@EnableJpaRepositories(basePackages = "com.me.model")
@EnableTransactionManagement
class MyApplication extends Neo4jConfiguration implements CommandLineRunner {

    MyApplication() {
        setBasePackage("com.me.graph.domain");
    }

    @Bean(destroyMethod = "shutdown")
    public GraphDatabaseService graphDatabaseService() {
        return new GraphDatabaseFactory().newEmbeddedDatabase("graph/neo4j.db");
    }

    @Autowired
    GraphDatabaseService db;

    @Bean
    public SingleTimeTree timeTree() {
        return new SingleTimeTree(db)
    }

    @Autowired
    LocalContainerEntityManagerFactoryBean entityManagerFactory;

    @Override
    @Bean(name = "transactionManager")
    public PlatformTransactionManager neo4jTransactionManager(GraphDatabaseService db) throws Exception {
        return new ChainedTransactionManager(new JpaTransactionManager(entityManagerFactory.getObject()),
                new JtaTransactionManagerFactoryBean(graphDatabaseService()).getObject());
    }

    @Override
    public void run(String... strings) throws Exception {
        startNeo4jServer()
    }

    private static final Logger log = LoggerFactory.getLogger(MyApplication.class);


    public void startNeo4jServer() {

        // used for Neo4j browser
        try {
            WrappingNeoServerBootstrapper neoServerBootstrapper;
            GraphDatabaseAPI api = (GraphDatabaseAPI) db;

            ServerConfigurator config = new ServerConfigurator(api);
            config.configuration()
                    .addProperty(Configurator.WEBSERVER_ADDRESS_PROPERTY_KEY, "127.0.0.1");
            config.configuration()
                    .addProperty(Configurator.WEBSERVER_PORT_PROPERTY_KEY, "7474");

            neoServerBootstrapper = new WrappingNeoServerBootstrapper(api, config);
            neoServerBootstrapper.start();
        } catch(Exception e) {
            //handle appropriately
            log.error("Exception when starting N4J")

        }
        // end of Neo4j browser config

    }

    static void main(String[] args) {

        ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);

        log.info("MyApplication started.");

    }

}

你的配置看起来像什么?不确定SD commons版本是否适用于引导启动程序。谢谢@MichaelHunger-我已经为上面的主应用程序添加了配置。顺便说一句,我添加了SD commons依赖项(1.10.1)以避免此错误(),在该错误()中,您建议添加此版本而不是默认版本。您的配置是什么样的?不确定SD commons版本是否适用于引导启动程序。谢谢@MichaelHunger-我已经为上面的主应用程序添加了配置。顺便说一句,我添加了SD commons依赖项(1.10.1)以避免此错误(),在该错误中,您建议添加此版本而不是默认版本。
@Configuration
@EnableAutoConfiguration
@EnableAsync
@EnableScheduling
@SpringBootApplication
@EnableNeo4jRepositories(basePackages = "com.me.graph")
@EnableJpaRepositories(basePackages = "com.me.model")
@EnableTransactionManagement
class MyApplication extends Neo4jConfiguration implements CommandLineRunner {

    MyApplication() {
        setBasePackage("com.me.graph.domain");
    }

    @Bean(destroyMethod = "shutdown")
    public GraphDatabaseService graphDatabaseService() {
        return new GraphDatabaseFactory().newEmbeddedDatabase("graph/neo4j.db");
    }

    @Autowired
    GraphDatabaseService db;

    @Bean
    public SingleTimeTree timeTree() {
        return new SingleTimeTree(db)
    }

    @Autowired
    LocalContainerEntityManagerFactoryBean entityManagerFactory;

    @Override
    @Bean(name = "transactionManager")
    public PlatformTransactionManager neo4jTransactionManager(GraphDatabaseService db) throws Exception {
        return new ChainedTransactionManager(new JpaTransactionManager(entityManagerFactory.getObject()),
                new JtaTransactionManagerFactoryBean(graphDatabaseService()).getObject());
    }

    @Override
    public void run(String... strings) throws Exception {
        startNeo4jServer()
    }

    private static final Logger log = LoggerFactory.getLogger(MyApplication.class);


    public void startNeo4jServer() {

        // used for Neo4j browser
        try {
            WrappingNeoServerBootstrapper neoServerBootstrapper;
            GraphDatabaseAPI api = (GraphDatabaseAPI) db;

            ServerConfigurator config = new ServerConfigurator(api);
            config.configuration()
                    .addProperty(Configurator.WEBSERVER_ADDRESS_PROPERTY_KEY, "127.0.0.1");
            config.configuration()
                    .addProperty(Configurator.WEBSERVER_PORT_PROPERTY_KEY, "7474");

            neoServerBootstrapper = new WrappingNeoServerBootstrapper(api, config);
            neoServerBootstrapper.start();
        } catch(Exception e) {
            //handle appropriately
            log.error("Exception when starting N4J")

        }
        // end of Neo4j browser config

    }

    static void main(String[] args) {

        ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);

        log.info("MyApplication started.");

    }

}