1

我正在使用SpringNeo4j lib 来制作REST Web 应用程序,它将操作 Neo4j 数据库上的数据。我正在努力配置我的项目,我无法在 Tomcat 中启动它。

我的HelloController课程在包中:com.testing.demo.neo

@Controller
@RequestMapping("/")
public class HelloController {

    @Autowired
    ItemRepository itemRep;

    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public String getUser(@RequestParam int id) {
        User user = userRep.findByPropertyValue("id", id);
        if(user == null)
            return("User is null");
        else
            return user.toString();
    }

    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String addUser(@RequestBody User user) {
        userRep.save(user);
        return user.toString();
    }
    ...
}

我的UserRepository课程在包中:com.testing.demo.neo.repository

public interface UserRepository extends GraphRepository<User> {
}

我的调度-servlet.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:neo4j="http://www.springframework.org/schema/data/neo4j"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd">

    <context:annotation-config />
    <context:component-scan base-package="com.testing.demo.neo"/>

    <neo4j:repositories base-package="com.testing.demo.neo.repository"/>

    <mvc:annotation-driven/>
    <tx:annotation-driven />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- REST Connection to Neo4j server -->
    <bean id="restGraphDatabase"  class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
        <constructor-arg value="http://localhost:7474/db/data/" />
    </bean>

    <!-- Neo4j configuration (creates Neo4jTemplate) -->
    <neo4j:config graphDatabaseService="restGraphDatabase" />
</beans>

我的 pom.xml 文件包括:

<properties>
    <spring.version>3.2.0.RELEASE</spring.version>
    <org.codehaus-version>1.9.10</org.codehaus-version>
    <slf4j.version>1.6.1</slf4j.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j-rest</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${org.codehaus-version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>

</dependencies>

<build>
    <finalName>demo-web-neo</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*Tests.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

尝试在 Tomcat 上部署并运行应用程序时,出现以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.testing.demo.neo.repository.UserRepository com.testing.demo.neo.HelloController.userRep; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'itemRepository': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: Ljavax/validation/Validator;

我过去几天一直在寻找解决方案,但一直没有找到。如果您可以帮助我进行此配置,请。提前致谢。

编辑: 我通过更改spring.versionto3.1.0.RELEASE并添加以下依赖项来解决问题,pom.xml因为Hibernate ValidatorNeo4j 使用了以下依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.2.0.Final</version>
</dependency>
4

1 回答 1

2

您缺少以下依赖项

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.1.0.Final</version>
</dependency>
于 2013-06-13T17:19:01.670 回答