gpt4 book ai didi

java - Spring @RestController

转载 作者:行者123 更新时间:2023-11-29 03:00:23 26 4
gpt4 key购买 nike

我一直在尝试扩展这个 Spring/Hibernate/JPA sample code on Github

虽然我让它工作正常,但我正在尝试添加一个新的@RestController 以获取所有 shop 对象的 JSON 列表。但是我的尝试并没有成功。

现有的 @Controller 继续正常工作,但新的 @RestController 无法识别,所有对它的请求都会导致 404。

这是我新的,非常简单的 @RestController。它与现有的 @Controller 在同一个包中,所以我希望它能被相同的组件扫描拾取:

@RestController
@RequestMapping("/rest")
public class ShopRestController {

@Autowired
private ShopService shopService;

@RequestMapping(method = RequestMethod.GET)
public List<Shop> getShops() {
return shopService.findAll();
}
}

我没有对代码进行任何其他更改。

我错过了什么?

编辑:不好意思忘了说我把pom.xml里的Spring版本升级到了4.2.0.RELEASE

除了新的 RestController 之外,应用程序仍然像以前一样工作

最佳答案

Spring @RestController自 4.0 版本以来,注释被记录为存在。可能你有某种类路径污染使注释被拾取,但不会工作,因为你给定的链接指向的 web-mvc 版本低于 4.0。

更新

我下载了链接的项目并对其进行了测试,删除了 Tomcat 8.0.32 中所有与存储库和数据相关的类。我让它与这个 pom 文件一起工作:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>spr-data</groupId>
<artifactId>spr-data</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spr-data</name>

<build>
<finalName>dpr-data</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.1.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.1.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
<!-- log4jdbc -->
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.3.0</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>

</project>

这个类作为@RestController,返回一个假的商店字符串列表作为json:

@RestController
@RequestMapping("/rest")
public class NavigationController {

@RequestMapping(method = RequestMethod.GET)
public List<String> getShops() {
return Arrays.asList("Shop1", "Shop2");
}

}

关于java - Spring @RestController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com