2.4 使用视图控制器
2.4 使用视图控制器
到目前为止,已经为
- 它们都用
@Controller 进行了注释,以表明它们是控制器类,应该由Spring 组件扫描自动发现,并在Spring 应用程序上下文中作为bean 进行实例化。 - 除了
HomeController 之外,所有的控制器都在类级别上使用@RequestMapping 进行注释,以定义控制器将处理的基本请求模式。 - 它们都有一个或多个方法,这些方法都用
@GetMapping 或@PostMapping 进行了注释,以提供关于哪些方法应该处理哪些请求的细节。
即将编写的大多数控制器都将遵循这种模式。但是,如果一个控制器足够简单,不填充模型或流程输入(就像
package tacos.web;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
关于
就像这样,已经能够用配置类中的几行代码替换
这里,已经创建了一个新的
@SpringBootApplication
public class TacoCloudApplication implements WebMvcConfigurer {
public static void main(String[] args) {
SpringApplication.run(TacoCloudApplication.class, args);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
通过扩展现有的配置类,可以避免创建新的配置类,从而降低项目工件数量。但是我倾向于为每种配置(web、数据、安全性等等)创建一个新的配置类,保持应用程序引导配置的简洁。
说到视图控制器,更一般地说,是控制器将请求转发给的视图,到目前为止,已经为所有视图使用了