在springboot中,如何擴充套件springmvc的功能
阿新 • • 發佈:2021-01-15
技術標籤:spring boot學習筆記spring boot
SpringBoot擴充套件springMvc功能
1. 使用spring boot擴充套件springMvc原因
- 未使用spring boot時,我們在springmvc中配置檢視解析器和攔截器的時候都是需要在xml檔案中編寫一些配置檔案以達到擴充套件的功能。如下所示新增檢視對映:
<mvc:view-controller path="/hello" view-name="success"/>
<mvc:interceptors>
<mvc:interceptor >
<mvc:mapping path="/hello"/>
<bean></bean>
</mvc:interceptor>
</mvc:interceptors>
- spring boot概念中,spring boot幾乎完全不需要xml檔案進行配置。因此,是spring boot自動載入了許多以前SpringMVC需要手動配置的東西,例如檢視解析器,訊息轉換器等
- 但是,spring boot中的自動配置並不足以滿足我們的開發需求,所以我們可以在預設的配置上進行擴充套件。
2. spring boot進行springMvc擴充套件
- 編寫MVC擴充套件類,實現WebMvcConfigurer類,用來說明這個類是用來配置MVC的擴充套件容器。
@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
/**
* 自定義檢視
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry. addViewController("/").setViewName("index");
registry.addViewController("/index").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
// 定義跳轉到主頁面的檢視
registry.addViewController("/main.html").setViewName("dashboard");
}
/**
* 註冊攔截器
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new WebInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login", "/css" +
"/**", "/js/**", "/img/**", "/", "/index", "/index.html");
}
}
- 攔截器
public class WebInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("loginUser");
if (loginUser == null) {
request.setAttribute("msg", "請先登入!");
request.getRequestDispatcher("/").forward(request, response);
return false;
} else {
return true;
}
}
}
- 執行專案即可。
總結:
- 只需要編寫一個配置類(
@Configuration
),是WebMvcConfigurerAdapter
型別; - 不標註
@EnableWebMvc
,標註了@EnableWebMvc
的類就會全部的接管Mvc的功能,SpringBoot就不會自動的為我們進行自動的配置, - 這個時候我們既保留了所有的自動配置,也能用我們擴充套件的配置。
- 官網解釋:https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration
3. 全面接管springMVC的配置
- SpringBoot對SpringMVC的自動配置都失效了,不需要。但,需要在配置類中新增
@EnableWebMvc
即可。 - 官網解釋:https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration