具有多个控制器的 Spring Boot API?

新手上路,请多包涵

我开始学习 Spring Boot。我正在努力寻找一个包含多个 RestController 的示例,这向我表明我可能做错了什么。我正在尝试一个非常简单的示例:目标是进行如下调用:

 localhost:8080/
localhost:8080/employees/bob
localhost:8080/departments

我只能让 localhost:8080/ 显示。其他调用返回响应:此应用程序没有 /error 的显式映射,因此您将其视为后备。

 com.demo.departments
Department.java
DepartmentController.java

com.demo.employees
Employee.java
EmployeeController.java

com.demo
BootDemoApplication.java

代码:

 package com.demo.departments
@RestController
@RequestMapping("/departments")
public class DepartmentController {

@RequestMapping("")
public String get(){
    return "test..";

}

@RequestMapping("/list")
public List<Department> getDepartments(){
    return null;

}

}
--------------------------------------------------------------------
package com.demo.employees
@RestController
@RequestMapping("/employees")
public class EmployeeController {

Employee e =new Employee();

@RequestMapping(value = "/{name}", method = RequestMethod.GET, produces = "application/json")
public Employee getEmployeeInJSON(@PathVariable String name) {

 e.setName(name);
 e.setEmail("employee1@genuitec.com");

 return e;

}
}
-----------------------------------------------------------------------

package com.demo
@RestController
@SpringBootApplication

public class BootDemoApplication {

public static void main(String[] args) {
    SpringApplication.run(BootDemoApplication.class, args);
}

@RequestMapping("/")
String home(){
    return "<html> This is the home page for Boot Demo.</html>";
}

原文由 user1529412 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 604
2 个回答

我正在尝试 Spring Boot 并遇到了同样的问题,只是修复了它,我在这里发布了我的解决方案,因为我认为它可能对某人有帮助。

首先,将应用程序类(包含 main 方法)放在控制器包的根目录下:

>  com.example.demo
>               |
>               +-> controller
>               |      |
>               |      +--> IndexController.java
>               |      +--> LoginController.java
>               |
>               +-> Application.java
>
> ```

应用.java

package com.example.demo;

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }


Spring会扫描 **demo** 包子包的所有组件

IndexController.java(返回 **index.html** 视图)

package com.example.demo.controller;

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;

@Controller @RequestMapping(value = {“”}) public class IndexController {

@GetMapping(value = {""})
public ModelAndView index() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("index");
    return modelAndView;
}

}


LoginController.java(返回 **login.html** 视图)

package com.example.demo.controller;

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;

@Controller @RequestMapping(value = {“/login”}) public class LoginController { @GetMapping(value = {“”}) public ModelAndView login() { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName(“login”); return modelAndView; } }

”`

现在我可以进入索引视图: http://localhost:8080/demo/ 和登录视图: http://localhost:8080/demo/login

原文由 VietDD 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题