发表于: 2017-12-05 22:16:33
1 653
今天完成的事情
尝试用注解的方式配置spring mvc
之前都是在web.xml中配置spring mvc的前端控制器的,采用注解的方式的话,需要写一个Java类:
public class SpittrWebAppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer{
/**
* 将DispatcherServlet映射到"/"
* @return
*/
@Override
protected String[] getServletMappings(){
return new String[]{"/"};
}
@Override
protected Class<?>[] getRootConfigClasses(){
return new Class<?>[] {RootConfig.class};
}
/**
* 指定配置类
* @return
*/@Override
protected Class<?>[] getServletConfigClasses(){
return new Class<?>[] {WebConfig.class};
}
}
扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动地配置DispatcherServlet和Spring应用上下文。在Servlet 3.0环境中,servlet容器会查找实现了ServletContationerInititalizer接口的类,如果有,就用它来配置Servlet容器,spring提供了这个接口的实现,名为SpringServletContainerInitializer,而这个接口又会查找实现WebApplicationinitializer的类并用它来进行配置,它有一个基础的实现,也就是AbstractAnnotationConfigDispatcherServletInitializer,扩展了它的类,servlet容器会自动发现它,并用来配置servlet上下文
getServletMappings()方法用来设置映射路径
getServletConfigClasses()方法返回的带有@Controller注解的类,将会用来定义DispatcherServlet应用上下文中的bean
WebConfig:
@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurerconfigurer){
configurer.enable();
}
}
@EnableWebMvc用来启动spring mvc
viewResolver()方法用来配置试图解析器
控制器:
@Controller
public class HomeController {
@RequestMapping(value = "/",method = RequestMethod.GET)
public String home(){
return "home";
}
}
可以编写单元测试来测试控制器:
@Test
public void testHomePage()throws Exception{
HomeController controller = new HomeController();
MockMvc mockMvc = standaloneSetup(controller).build();
mockMvc.perform(get("/")).andExpect(view().name("home"));
}
testHomePage()方法发起了对“/”的get请求,并断言结果视图名称位home
测试通过:
明天的计划
看版本控制
遇到的问题
无
收获
对spring mvc的运行机制有了一些理解
评论