千家信息网

Spring4+SpringMVC+MyBatis整合思路

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文主要简单讲解框架整合的思路。1、Spring框架的搭建这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,
千家信息网最后更新 2026年11月02日Spring4+SpringMVC+MyBatis整合思路

本文主要简单讲解框架整合的思路。
1、Spring框架的搭建

这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring加载配置文件,那么spring容器搭建完成。(当然org.springframework的核心jar包需要引入)

当然为了更加易用支持J2EE应用,一般我们还会加上如下:

Spring监听HTTP请求事件:org.springframework.web.context.request.RequestContextListener



contextConfigLocation
classpath:webconfig/service-all.xml


org.springframework.web.context.ContextLoaderListener








org.springframework.web.context.request.RequestContextListener


org.springframework.web.util.IntrospectorCleanupListener


encodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
UTF-8


forceEncoding
false



encodingFilter
/


2、Spring MVC的搭建

首先我们知道Spring MVC的核心是org.springframework.web.servlet.DispatcherServlet,所以web容器中少不了它的注册。(当然org.springframework的web、mvc包及其依赖jar包需要引入)



Spring-MVC
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring/spring-mvc.xml

1


Spring-MVC
.do

同时为了更好使用MVC,spring-mvc.xml需要配置以下:

1)(可选)多部分请求解析器(MultipartResolver)配置,与上传文件有关 需要类库commons-io、commons-fileupload





2)(可选)本地化(LocaleResolver)配置

3)(可选)主题解析器(ThemeResolver)配置

4)(必选)处理器映射器(HandlerMapping)配置,可以配置多个,一般采用RequestMappingHandlerMapping或者自定义

这里我们自定义了一个处理器映射器,继承重写RequestMappingHandlerMapping,支持@RequestMapping无需任何path参数自动装载类名或方法作为url路径匹配。

class="io.flysium.framework.web.servlet.mvc.method.annotation.CustomHandlerMapping">

CustomHandlerMapping实现:@Override
br/>@Override

RequestMappingInfo info = createRequestMappingInfoDefault(method);
if (info != null) {
RequestMappingInfo typeInfo = createRequestMappingInfoDefault(handlerType);
if (typeInfo != null)
info = typeInfo.combine(info);
}
return info;
}

private RequestMappingInfo createRequestMappingInfoDefault(AnnotatedElement element) {
RequestMapping requestMapping = AnnotatedElementUtils.findMergedAnnotation(element,
RequestMapping.class);
RequestCondition condition = (element instanceof Class)
? getCustomTypeCondition((Class) element)
: getCustomMethodCondition((Method) element);
/**

  • 以类名和方法名映射请求,参照@RequestMapping
  • 默认不需要添加任何参数(如:/className/methodName.do)
    */
    String defaultName = (element instanceof Class)
    ? ((Class) element).getSimpleName()
    : ((Method) element).getName();
    return requestMapping == null
    ? null
    : createRequestMappingInfo(requestMapping, condition, defaultName);
    }

    protected RequestMappingInfo createRequestMappingInfo(RequestMapping annotation,
    RequestCondition customCondition, String defaultName) {
    String[] patterns = resolveEmbeddedValuesInPatterns(annotation.value());
    if (patterns != null && (patterns.length == 0)) {
    patterns = new String[]{defaultName};
    }
    return new RequestMappingInfo(
    new PatternsRequestCondition(patterns, getUrlPathHelper(), getPathMatcher(),
    this.useSuffixPatternMatch, this.useTrailingSlashMatch,
    this.fileExtensions),
    new RequestMethodsRequestCondition(annotation.method()),
    new ParamsRequestCondition(annotation.params()),
    new HeadersRequestCondition(annotation.headers()),
    new ConsumesRequestCondition(annotation.consumes(), annotation.headers()),
    new ProducesRequestCondition(annotation.produces(), annotation.headers(),
    this.contentNegotiationManager),
    customCondition);
    }

5)(必选)处理器适配器(HandlerAdapter)配置,可以配置多个,主要是配置messageConverters,其主要作用是映射前台传参与handler处理方法参数。一般扩展RequestMappingHandlerAdapter,或者自定义。如果我们需要json请求的处理,这里必须扩展。同时我们需要注意的是日期格式的转换。

另外Spring 4.2新特性,加之注解会自动注入@ControllerAdvice,可以定义RequestBodyAdvice、ResponseBodyAdvice,可以更方便地在参数处理方面着手自定义。

class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">








class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">



class="org.springframework.format.support.FormattingConversionServiceFactoryBean">






class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">


static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" />




yyyy-MM-dd HH:mm:ss




class="io.flysium.framework.http.converter.json.CustomJackson2HttpMessageConverter">



text/html;charset=UTF-8
application/json;charset=UTF-8


6)(可选)处理器异常解析器(HandlerExceptionResolver)配置,可以配置多个,配置Controller异常抛出后,我们是怎么样处理的,一般需要日志或做反馈的可以自定义。

7)(可选)请求到视图名翻译器(RequestToViewNameTranslator)配置,RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request获得viewName。

8)(可选)视图解析器(ViewResolver)配置,可以配置多个,定义跳转的文件的前后缀 ,视图模式配置,主要针对@Controller返回ModelAndView的视图路径解析,动给后面控制器的方法return的字符串 加上前缀和后缀,变成一个 可用的url地址 。

class="org.springframework.web.servlet.view.InternalResourceViewResolver">


value="org.springframework.web.servlet.view.JstlView" />

最后给Controller加入组件扫描吧,这样减少xml配置,直接在Java代码中加入注解即可。



expression="org.springframework.stereotype.Controller" />
expression="org.springframework.web.bind.annotation.RestController" />
expression="org.springframework.web.bind.annotation.ControllerAdvice" />

3、Mybatis整合

整合mybatis到Spring框架,我们需要mybatis的jar包,及mybatis-spring整合jar包。然后在Spring容器中注册配置org.mybatis.spring.SqlSessionFactoryBean(需要数据源,及指定Mybatis配置文件)及org.mybatis.spring.SqlSessionTemplate即可。

配置 处理 处理器 整合 参数 多个 容器 文件 方法 日期 框架 注解 视图 代码 前台 同时 后缀 字符 字符串 射器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 上海卓越科技互联网 互联网科技工作委员会主任 美国互联网保险保险科技 齐家互联网科技 互联网科技公司官网 互联网与未来科技 腾讯科技 互联网女皇 易通互联网络科技有限公司 互联网科技股午盘股票涨跌 济南和联互联网科技有限公司 知域互联网科技有限公司大骗子 阿大互联网科技有限公司 互联网科技和法律行业 四川慕妮娅互联网科技有限公司 锡山区互联网智能科技产品供应 南通创西澳互联网科技有限公司 广州千川互联网科技有限公司 互联网金融金融科技 科技发展第三阶段互联网时代 中国互联网科技股 互联网扶贫科技 美国互联网科技巨头监管 智慧科技互联网 互联网科技英文翻译 青海省互联网新科技 洛阳共同富裕互联网科技有限公司 国大互联网教育科技有限公司薪资 广东猫王互联网科技有限公司电话 互联网科技自媒体灵感
0