基于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