【发布时间】:2021-08-08 22:12:36
【问题描述】:
我有以下控制器:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value="/")
public class ToDoController
{
@GetMapping
public String print()
{
return "Hello";
}
}
我也按如下方式运行 spring 应用程序:
import java.util.Collections;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Startup
{
public static void main(String[] args)
{
SpringApplication app = new SpringApplication(Startup.class);
app.setDefaultProperties(Collections
.singletonMap("server.port", "9005"));
app.run(args);
}
}
现在当我运行 localhost:9005/ 时,我确实看到了以下弹出窗口
2021-05-19 12:05:00.961 INFO 40900 --- [nio-9005-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]:初始化 Spring DispatcherServlet 'dispatcherServlet' 2021-05-19 12:05:00.961 INFO 40900 --- [nio-9005-exec-1] os.web.servlet.DispatcherServlet:初始化 Servlet 'dispatcherServlet' 2021-05-19 12:05:00.962 INFO 40900 --- [nio-9005-exec-1] os.web.servlet.DispatcherServlet:在 1 毫秒内完成初始化
我认为这意味着某些连接正在工作,但我在网页上收到 404 错误。
现在奇怪的是,当我将这两个类复制粘贴到另一个项目(在我以前工作过并且知道工作的包中)时,代码运行良好。但是,如果在同一个项目中我创建了一个新包并在该包中放置了带有新 Startup 类的新控制器,则控制器也不起作用(404 错误)。
我用 eclipse 构建了这个项目,并在类路径中包含了所有依赖项,我从来不需要制作 web.xml 文件,而且我发现的大多数解决方案都需要你更改该文件。
任何帮助都将不胜感激,因为我没有做任何与有效的项目/包不同的工作和不工作的项目/包。
【问题讨论】:
-
Startup和ToDoController驻留在哪些包中? -
你只是通过这个简单的问题让我意识到问题。我的启动和控制器在不同的包中。当我把它放在同一个包中时它可以工作,当我不它时它不起作用。我怎样才能使它工作,以便控制器在一个包中,而启动在另一个包中?
标签: java spring spring-mvc