Spring Rest控制器给出404错误

时间:2017-10-13 15:33:40

标签: java spring spring-mvc h2

我有一个弹簧控制器,它给出了404错误。

请找到以下控制器代码:

@RestController
@RequestMapping("/todo")
public class ToDoController {

private ToDoService toDoService;

private Logger logger = LoggerFactory.getLogger(ToDoController.class);

@Inject
public ToDoController(@Named("toDoService") ToDoService toDoService) {
    this.toDoService = toDoService;
}

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public ToDo getToDo(@PathVariable("id") int id) {
    logger.debug("Provider has received request to get person with id: " + id);
    return toDoService.getToDo(id);
}

@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void addToDo(@RequestBody ToDo toDo) {
    toDoService.addToDo(toDo);
}
}

web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/root-context.xml</param-value>
</context-param>

我有我的弹簧配置XML(root-context.xml),如下所示。我为应用程序配置了H2内存数据库

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:jdbc="http://www.springframework.org/schema/jdbc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">

<!-- Root Context: defines shared resources visible to all other web components -->

<mvc:annotation-driven />

<context:component-scan base-package="com.jithesh" />

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                    <property name="serializationInclusion">
                        <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
                    </property>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

<mvc:resources mapping="/resources/**" location="/resources/" />

<!-- Use in-memory embedded H2 database -->
<jdbc:embedded-database id="dataSource" type="H2">
</jdbc:embedded-database>

<!-- Run H2 web server within application that will access the same in-memory database -->
<bean id="h2Server" class="org.h2.tools.Server" factory-method="createTcpServer" init-method="start" destroy-method="stop" depends-on="h2WebServer">
    <constructor-arg value="-tcp,-tcpAllowOthers,-tcpPort,9092"/>
</bean>
<bean id="h2WebServer" class="org.h2.tools.Server" factory-method="createWebServer" init-method="start" destroy-method="stop">
    <constructor-arg value="-web,-webAllowOthers,-webPort,8082"/>
</bean>

<!-- Database managed by Hibernate -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="UsersPU" />
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" >
        <list>
            <value>com.jithesh.domain</value>
        </list>
    </property>
    <property name="persistenceProvider">
        <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
    </property>
    <property name="jpaProperties">
        <map>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
            <entry key="hibernate.hbm2ddl.auto" value="create" />
            <entry key="hibernate.hbm2ddl.import_files" value="import_data.sql" />
            <entry key="hibernate.show_sql" value="true" />
        </map>
    </property>
</bean>

<bean id="transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

我从UI调用ToDoController,但这给出了404错误。 我已经验证了服务器控制台并确认应用程序已正确部署。

我真的很困惑。 请帮我解决这个问题

0 个答案:

没有答案