基於Spring4新特性,嘗試了一下純註解啓動Mvcjava
主要類以下圖:web
RootConfig:tomcat
/** * RootConfig * @author zoe * */ @Configuration @ComponentScan(basePackages={"com.spittr"},excludeFilters={@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}) public class RootConfig { }
WebConfig:app
/** * * @author zoe * */ @Configuration @EnableWebMvc @ComponentScan("com.spittr.web") public class WebConfig extends WebMvcConfigurerAdapter { @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver();//jsp視圖解析器 resolver.setPrefix("/WEB-INF/view/"); resolver.setSuffix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; } /** * 配置靜態資源的處理 * 將請求交由Servlet處理,不通過DispatchServlet */ public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){ configurer.enable(); } }
WebAppInitializer:jsp
/** * web初始化類,替代xml * 繼承Abs..類後,會同時建立DispatcherServlet和ContextLoaderListener * 前提:Servlet3.0 * @author zoe * */ public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { /** * 配置ContextLoaderListener */ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{RootConfig.class}; } /** * 配置DispatcherServlet */ @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{WebConfig.class}; } /** * 配置ServletMappings */ @Override protected String[] getServletMappings() { return new String [] {"/"}; } }
HomeController:ide
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { return "home"; } }
通過測試發現tomcat7.0.12暫時不支持,官方說tomcat7已經支持servlet3.0了,應該就可使用,緣由未知。測試
我後來使用tomcat8.5.9,就能夠啓動成功。spa