📜  Spring MVC - 多控制器(1)

📅  最后修改于: 2023-12-03 14:47:33.645000             🧑  作者: Mango

Spring MVC - 多控制器

在Spring MVC中,我们可以使用多个控制器从而更加灵活地组织我们的代码和路由请求。本文将介绍如何使用多个控制器来增加我们的应用程序的适应性。

1. 创建多个控制器

要创建多个控制器,我们可以在我们的应用程序中创建多个控制器类,并为每个类添加一个@RequestMapping注释以指定它们负责处理的请求路径。以下是一个示例控制器类:

@Controller
@RequestMapping("/admin")
public class AdminController {

   @GetMapping("/")
   public String index(Model model) {
       model.addAttribute("message", "你正在查看管理员页面");
       return "admin/index";
   }
}

如上代码“AdminController”使用@RequestMapping("/admin")指定了 "/admin" 路径,使用@GetMapping("/")指定了处理该请求的方法是index。此时如果我们访问 /admin,Spring MVC将会将请求交给AdminController中的index方法处理,然后返回模板 "admin/index"。

除了创建多个控制器,我们还可以创建一个拥有多个方法的控制器,每个方法处理不同的请求路径。以下是一个示例:

@Controller
public class HomeController {

   @GetMapping("/")
   public String index(Model model) {
       model.addAttribute("message", "你正在访问首页");
       return "home/index";
   }

   @GetMapping("/about")
   public String about(Model model) {
       model.addAttribute("message", "你正在访问关于页");
       return "home/about";
   }
}

如上代码中,"/" 路径会被HomeController中的index()处理,"/about" 路径会被HomeController中的about()方法处理。

2. 多控制器配置

当我们创建了多个控制器类,我们需要告诉Spring MVC如何找到它们。有两种方法可以通过配置的方式告诉Spring MVC。

2.1 Component扫描

通过在@Configuration类上使用@ComponentScan注释,并指定要扫描的包和类的包路径,可以告诉Spring MVC要查找的控制器位置。

以下是示例代码:

@Configuration
@ComponentScan(basePackages = {
    "com.example.demo.controller1",
    "com.example.demo.controller2"
})
public class AppConfig {
}
2.2 显示声明

对于较小的应用程序,可以使用JavaConfig显式声明控制器,并将它们添加到WebMvcConfigurer类中的addControllers方法中。

以下是示例代码:

@Configuration
public class AppConfig implements WebMvcConfigurer {

   @Override
   public void addControllers(ControlllerRegistry registry) {

       registry.addViewController("/admin").setViewController(new AdminController());
       registry.addViewController("/home").setViewController(new HomeController());

   }

}

如上代码中,我们声明了Admin控制器和HomeController控制器,并将它们添加到addControllers方法中。

3. 结论

本文介绍了如何在Spring MVC中使用多个控制器来增加应用程序的适应性和组织方式。我们可以通过创建多个控制器和不同的请求路径来实现不同的路由,同时,我们还可以使用JavaConfig来将控制器添加到Spring MVC中。