博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC4 + Spring + MyBatis3 【转】
阅读量:6694 次
发布时间:2019-06-25

本文共 4333 字,大约阅读时间需要 14 分钟。

hot3.png

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建。

1. web.xml

我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在web.xml文件中配置DispatcherServlet,而Spring的启动则是使用了监听器,所以需要配置spring的监听器:

sp
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
1
contextConfigLocation
classpath:config/spring-mvc.xml
dispatcherServlet
/
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:config/applicationContext.xml

 

servlet下面的init-param中的指定了springmvc的dispatcherServlet的配置文件:config/spring-mvc.xml,所有springmvc相关的都在该文件中进行配置。在DispatcherServlet(其父类)中使用:getServletConfig().getInitParameter("paramName");  可以访问到init-param中指定的参数,从而可以读取到config/spring-mvc.xml文件。load-on-startup值为1指定了dispatcherServlet随servlet容器启动。

ContextLoaderListener是spring监听servlet容器的启动的,在servlet容器启动时,就初始化bean工厂,对bean进行初始化等等操作。context-param指定了spring的配置文件config/applicationContext.xml,可以使用: getServletContext().getInitParameter("paraName"); 读取到值。

注意:init-param 和 context-param 的区别,从名字上就可以看得出,后者是相对于整个web应用的,而前者是针对单个servlet的。

2. springmvc.xml

下面我们看一下springmvc.xml该如何配置:

 

// ... ...

 

启用注解驱动来扫描controller,并指定control的包路径,还有指定了视图解析器,so easy。

3. applicationContext.xml

spring中相关bean扫描,事物的配置,以及和mybatis的结合配置如下所示:

 

 

同样相关service bean也使用基于注解的扫描方式:context:component-scan,事务也使用注解来驱动:tx:annotation-driven,所以需要在serviceImpl相关类上和方法上使用@Transanctional注解类配置事物。

sqlSessionFactory的配置相当重要,configLocation指定了mybatis的配置文件,如果需要在mybatis配置文件中配置比如<settings>, <typeAliases>, <mappers>则,需要在这里指定,如果不需要就没有必要指定值了。mapperLocations指定了mapper接口映射sql语句的xml文件的位置。MapperScannerConfigurer指定了mapper接口所在的包路径。

4. mybatis-config.xml

spring和mybatis的接口,其实可以不需要mybatis-config.xml文件的存在,只有在需要配置<settings>, <typeAliases>, <mappers>(其实mapper也一并也是在applicationContext.xml中进行配置)才需要mybatis-config.xml文件的存在:

 

指定了数据库操作相关的设置,typeAliases指定了可以给数据库表对应的类所在的包路径,可以在sql的xml使用它们的别名:

 

package net.aazj.pojo;import org.apache.ibatis.type.Alias;@Alias("User")public class User {    private Integer id;    private String name;        // ... ...}

@Alias("User")注解了该pojo的别名,所以可以在xml文件中使用别名 User 来代替:net.aazj.pojo.User

 

 

这里 resultType="User" 不需要使用全限定类名。<cache />启用了基于namespace="net.aazj.mapper.UserMapper"的全局缓存。

5. generatorConfig.xml

 

 

上面是Mybatis generator的配置文件:

1)classPathEntry  指定驱动位置;

2)jdbcConnection 指定数据库连接信息;

3)javaModelGenerator 指定生成的pojo类的位置;

4)sqlMapGenerator 指定指定生成的sql xml文件的位置;

5)javaClientGenerator 指定 mapper 接口的位置;

6)table 指定将数据库中哪些表进行处理;<generatedKey column="id" sqlStatement="mysql" identity="true" /> 用于指定主键;

核心技术:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx 

1.     项目核心代码结构截图

分布式框架介绍 - kafkaee - kafkaee的博客

   项目模块依赖

分布式框架介绍 - kafkaee - kafkaee的博客

 

特别提醒:开发人员在开发的时候可以将自己的业务REST服务化或者Dubbo服务化

2.    项目依赖介绍

   2.1 后台管理系统、Rest服务系统、Scheculer定时调度系统依赖如下图:

 

分布式框架介绍 - kafkaee - kafkaee的博客

       2.2 Dubbo独立服务项目依赖如下图:

 分布式框架介绍 - kafkaee - kafkaee的博客

3.  项目功能部分截图:

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

zookeeper、dubbo服务启动 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

dubbo管控台 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 REST服务平台

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

转载于:https://my.oschina.net/dfmnblkdgbl/blog/776746

你可能感兴趣的文章
week1 - Python基础1 介绍、基本语法、流程控制
查看>>
vue作用域插槽示例
查看>>
Apache Ignite 学习笔记(四): Ignite缓存冗余备份策略
查看>>
uwsgi service 设置
查看>>
matlab x~=0
查看>>
使用线性渐变写一个歌词播放效果
查看>>
PowerDesigner最基础的使用方法入门学习
查看>>
golang -- 字符串就地取反
查看>>
Leetcode题目:Count and Say
查看>>
Linux 进程管理子系统
查看>>
MyEclipse快捷键大全
查看>>
ethereum/EIPs-1078 Universal login / signup using ENS subdomains
查看>>
android studio偏好设置
查看>>
本周学习小结(18/03 - 24/03)
查看>>
what difference between libfm and libffm
查看>>
NUC1013 阶乘结果末尾有多少零【分析思维】
查看>>
HDU1200 POJ2039 ZOJ2208 UVALive3084 To and Fro【密码】
查看>>
UVALive2389 ZOJ1078 Palindrom Numbers【回文+进制】
查看>>
Qt之二进制兼容
查看>>
[转]GCD介绍
查看>>