Spring4Mvc純註解啓動,無web.xml

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

相關文章
相關標籤/搜索