SpringMVC的零配置实现
来源:互联网 发布:淘宝10元包邮 编辑:程序博客网 时间:2024/06/06 10:45
传统方式配置方式通过个web.xml 配置 org.springframework.web.servlet.DispatcherServlet,实现请求的路由和相关流程的控制。
当前基于Spring 版本5.0.2.RELEASE
web.xml中的基本配置
<servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
阅读源代码发现底层一样实现WebApplicationInitializer并重写onStartup
取代web.xml
import java.util.EnumSet;import javax.servlet.DispatcherType;import javax.servlet.FilterRegistration;import javax.servlet.MultipartConfigElement;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRegistration.Dynamic;import org.springframework.web.WebApplicationInitializer;import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;import org.springframework.web.filter.CharacterEncodingFilter;import org.springframework.web.servlet.DispatcherServlet;import com.digimaple.core.constant.Repository;import com.digimaple.core.constant.Sys;/** * @ClassName WebOnStartup * @Description 容器启动装载配置 * @author Cheng.Wei * @date 2017年12月9日 上午0:25:35 * */public class WebOnStartup implements WebApplicationInitializer{/* (non-Javadoc) * @see org.springframework.web.WebApplicationInitializer#onStartup(javax.servlet.ServletContext) */@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext webContext = createWebContext(WebMvc.class);Dynamic dynamic = servletContext.addServlet(Sys.SERVLET_NAME, new DispatcherServlet(webContext));dynamic.addMapping("/");dynamic.setLoadOnStartup(1);}/** * 自定义配置类来实例化一个Web Application Context * @param annotatedClasses * @return */private AnnotationConfigWebApplicationContext createWebContext(Class<?>... annotatedClasses) {AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();webContext.register(annotatedClasses);return webContext;}}
spring-servlet.xml配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd "> <!-- SpringMVC配置信息 --> <context:component-scan base-package="org.dhweicheng"> <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/> </context:component-scan> <mvc:annotation-driven/> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> <property name="contentType" value="text/html;charset=UTF-8"/> </bean> <mvc:default-servlet-handler/></beans>
取代spring-servlet.xml
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.core.io.ClassPathResource;import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import org.springframework.web.servlet.view.BeanNameViewResolver;import org.springframework.web.servlet.view.json.MappingJackson2JsonView;/** * @ClassName WebMvc * @Description 表现层配置 * @author Cheng.Wei * @date 2017年12月9日 上午0:40:00 * 实现 {@link org.springframework.web.servlet.config.annotation.WebMvcConfigurer} */@Configuration @EnableWebMvc @ComponentScan(basePackages = "org.dhweicheng",includeFilters= {@ComponentScan.Filter(type=FilterType.ANNOTATION, value= {org.springframework.stereotype.Controller.class})})public class WebMvc implements WebMvcConfigurer{protected static final Logger logger = LogManager.getLogger(WebMvc.class); @Beanpublic LocalValidatorFactoryBean validator() {logger.debug("LocalValidatorFactoryBean");return new LocalValidatorFactoryBean();}@Beanpublic BeanNameViewResolver beanNameViewResolver() {logger.debug("BeanNameViewResolver");return new BeanNameViewResolver();}@Beanpublic MappingJackson2JsonView jsonView() {logger.debug("MappingJackson2JsonView");MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();mappingJackson2JsonView.setContentType("text/html;charset=UTF-8");return mappingJackson2JsonView;}/**激活静态资源处置策略*/public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}}
至此可以删除web.xml配置和springMVC配置,而这均已通过java代码实现。
阅读全文
1 0
- SpringMVC的零配置实现
- 零配置搭建SpringMVC
- Struts2零配置的实现
- springMVC零配置吐槽
- Servlet3 + SpringMVC零配置:去除所有的xml
- struts实现零配置
- Struts2实现零配置
- mybatis实现零配置
- mybatis实现零配置
- springmvc maven零配置项目部署错误
- 零xml配置SpringMVC返回json数据
- SpringMVC基于代码的配置方式(零配置,无web.xml)
- SpringMVC基于代码的配置方式(零配置,无web.xml)
- SpringMVC基于代码的配置方式(零配置,无web.xml)
- SpringMVC基于代码的配置方式(零配置,无web.xml)
- 使用ControllerClassNameHandlerMapping实现SpringMVC的CoC配置
- 使用ControllerClassNameHandlerMapping实现SpringMVC的CoC配置
- 使用ControllerClassNameHandlerMapping实现SpringMVC的CoC配置
- Android Study Material Design 十四 之再战CoordinatorLayout
- 多进程一
- 原型
- 中国剩余定理
- 机器学习---最邻近规则分类KNN(k-NearestNeighbor)算法
- SpringMVC的零配置实现
- Spring AOP & AspectJ之原理探析
- NEFU 1212 还是序列求和(线段树)
- 编译Mupdf源码
- 如何导出、导入mysql数据
- 通过使用python来处理文件的技巧持续更新:【内向即失败--王奕君】
- 蒟蒻讲解线段树+题目
- R语言:如何在一张图上画多个填色等值线图
- 新建maven项目pom.xml报错