纯注解整合SSM框架
说在前面的话
SSM:Spring+SpringMVC+MyBatis。
SSM框架组合已经是现在最热门的后端框架组合了。本篇我要说的就是使用纯注解整合这三大框架。当然了SpringMVC本身就是spring的一部分。也谈不上整合。所以SSM有时我叫SM。(其实不用在意叫法,好听就行)。
当然了我们都知道现在有SpringBoot可以轻松完成这些框架整合配置。所以这篇文章是给学习中的学子们准备的,已经熟练使用SpringBoot的大佬请绕行。
tips:后面有源码下载地址。
嗨!直接开打吧
你需要准备的武器
- 学习过Spring,SpringMVC和MyBatis框架
- 最好使用xml的方式整合过SSM框架
- 当然也必须知道Maven是个啥,肯定也必须会使用Mavne
- 要有一份对技术不断追求的心
- 要热爱我的民族,热爱我们的祖国_
不说了,开整吧
整合思路
首先我们要有明确的整合思路,所谓SSM整合其实就是将MyBatis整合到Spring中。这时就要考虑MyBatis中都有什么要整的呢??
经过考虑,整体思路大概如下:
- MyBatis 需要的数据源要交给spring,也就是在spring中注册数据源。
- MyBatis的Mapper要交给spring使用动态代理生成。嗯…SqlSessionFactory的配置…
- spring的RootContent和WebContent要合并…嗯…
OK!动手
[1]创建项目
打开你的idea,配置好Maven,创建新的项目,创建好需要的目录和包。像下面的截图一样。
[2]配置依赖
打开POM文件,添加下面的配置
版本锁定的部分,我这里使用的spring5.2.6 你是啥打算呢?
<!-- 版本锁定 -->
<properties><!-- spring版本 --><spring.version>5.2.6.RELEASE</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
添加依赖:
<dependencies><!-- spring框架的jar --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><!-- mysql驱动 5.1.47 --><!-- 如果你的数据库是MySQL8 请更换对应的版本 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- MyBatisjar --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><!-- MyBatis和spring整合的第三方jar文件 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency><!-- druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!-- servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!-- 这里的scope必须是 provided --><scope>provided</scope></dependency><!-- 处理JSON的jar文件 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.8</version></dependency>
</dependencies>
再来个插件吧:
<build><!-- 配置将main/java下的资源文件也打包 --><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.*</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.*</include></includes><filtering>false</filtering></resource></resources><plugins><!-- tomcat插件控制 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path><uriEncoding>UTF-8</uriEncoding></configuration></plugin><!-- maven插件控制 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>utf-8</encoding></configuration></plugin></plugins></build>
[3]两个配置类
添加一个RootConfig配置,这个配置类主要用来创建根容器。
这个类就相当使用XML配置文件整合时的spring的配置文件applicationContext.xml
package com.qidian.config;import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;/*** @author 戴着假发的程序员* 相当于spring的配置文件*/
@Configuration
// 配置service的扫描包
@ComponentScans({@ComponentScan("com.qidian.service")
})
// 这个配置用来扫描加载所有的mapper接口和xml文件。
// 当然也可以使用@Bean的方式注入一个扫描器MapperScannerConfigurer来扫描
@MapperScan("com.qidian.mapper")
// 加载数据库连接的配置的资源文件
@PropertySource("classpath:db.properties")
public class RootConfig {@Value("${jdbc.driver}")private String driverClass;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;// 配置数据源@Beanpublic DataSource dataSource(){// druid数据源DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driverClass);dataSource.setPassword(password);dataSource.setUsername(username);dataSource.setUrl(url);return dataSource;}// 注入SqlSessionFactoryBean@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(){SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource());// 实体类别名包bean.setTypeAliasesPackage("com.qidian.bank.pojo");return bean;}// 注入事务管理器@Beanpublic TransactionManager transactionManager(){DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();transactionManager.setDataSource(dataSource());return transactionManager;}
}
添加配置类WebConfig
这个类可以继承WebMvcConfigurer,可以通过父类的API添加视图解析器,静态资源映射,拦截器等等。
这个配置主要用来配置web相关的内容,扫描controller等。
package com.qidian.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author 戴着假发的程序员*/
@Configuration
// 扫描所有的controller
@ComponentScan("com.qidian.controller")
// 添加SpringMVC相关配置
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 静态资源的映射registry.addResourceHandler("/**/*.html").addResourceLocations("/");registry.addResourceHandler("/**/*.css").addResourceLocations("/");registry.addResourceHandler("/**/*.js").addResourceLocations("/");registry.addResourceHandler("/**/*.png").addResourceLocations("/");registry.addResourceHandler("/**/*.jpg").addResourceLocations("/");registry.addResourceHandler("/lib/**/*.*").addResourceLocations("/lib/");registry.addResourceHandler("/**/*.json").addResourceLocations("/");}
}
当然不要忘记在resources中添加db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/bank?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
看看现在情况呢:
[4]RootWebApplicationContext和DispatcherServletWebApplicationContext
以下简称RootWebApplicationContext为:RootContext,DispatcherServletWebApplicationContext为:DispatcherServletContext。
WebApplicationContext扩展了ApplicationContext,代表的Spring Web的应用上下文,RootContext由ContextLoaderListener创建,其中存放了各种注册到Spring的非Web组件的bean(比如service)。RootContext初始化完成后将其存储到ServletContext中,便于获取。在源码中你可以看到这样的代码:servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
接着是DispatcherServletContext的初始化,它会以RootContext为父上下文(在DispatcherServletContext中可以引用RootContext中的非web组件,而反过来不行。),然后初始化Web相关组件,比如控制器,视图解析器等。DispatcherServletContext初始化完毕后将自身存入ServletContext.
WebApplicationContext和DispatcherServlet上下文初始化方式
在主包中添加一个初始化Web环境的类:
package com.qidian;import com.qidian.config.RootConfig;
import com.qidian.config.WebConfig;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;/*** @author 戴着假发的程序员*/
public class BankContextInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {// 根容器配置类return new Class[]{RootConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {// web容器配置类return new Class[]{WebConfig.class};}@Overrideprotected String[] getServletMappings() {// 拦截的路径return new String[]{"/*","*.action"};}
}
看看这个类的位置:
[5]添加对应的mapper,service,controller进行测试了
浏览器访问:
源码下载地址:https://gitee.com/win-dk/SSM-annotation-demo
纯注解整合SSM框架相关推荐
- idea 使用 maven 整合 ssm 框架 实现简单的增、删、改 和 分页查询功能
详细请参考: idea 使用 maven 整合 ssm 框架 文章目录 ==效果图== ==准备数据库== ==创建maven项目== ==配置文件== pom.xml jdbc.properti ...
- idea 使用maven 整合ssm框架
创建 maven 项目 刚创建好的 maven 项目结构 整合 SSM 框架后的项目结构 数据库环境 创建 mybatis 数据库,在 mybatis 数据库中创建 teacher 数据库表,然后在 ...
- idea ssm框架 mysql_IDEA 2017 整合SSM框架(使用Maven创建工程)
SSM框架(Spring+SpringMVC+MyBatis)是目前Java WEB开发使用较多的框架,搭建起来起来比较麻烦,之前也曾搭建成功过.这次通过结合SSM开发的相关学习视频,再一次系统性的将 ...
- 2023新版图文详解SpringBoot整合SSM框架(附源码)
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 教程概述 本教程以图文形式详细讲解SpringBoot整合SSM框架的流程以及具体步骤及其注意 ...
- 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)
超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...
- batocera中文整合包_分享一个整合 SSM 框架的高并发和商品秒杀项目
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 ...
- 整合mybatis——使用纯注解整合、使用Mapper+Mapper.xml整合、使用mybatis.cfg.xml整合
引入druid <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-b ...
- springboot2整合mysql5_SpringBoot2整合SSM框架详解
SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...
- IDEA整合SSM框架之配置日志logback(七)
IDEA整合SSM框架 配置日志logback 引入logback相关依赖 在resources的根目录下创建logback.xml 在web.xml配置logback.xml 运行项目,查看日志打印 ...
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程重要
前言 SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不知道大家有没有留意,在我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教 ...
最新文章
- 看看是否有人用USB偷插你的电脑
- ubuntu下安装极点五笔
- if嵌套-火车站安检-检查刀的长度
- sublime text3安装js提示的插件
- 欧拉函数 - HDU1286
- 多线程----join插队
- caffe下matlab、python的配置和faster RCNN的运行
- 微信 php收藏功能实现,关于微信小程序收藏功能的实现
- 中兴通讯徐子阳:不破不立 用“加减乘除”建理想5G
- 如何在 Apple TV 上更快地打开您喜爱的应用?
- 一次荒唐的技术决策过程:排除研发总监,无技术参与
- 软件逆向工程的前世今生
- 使用nginx时候html页面乱码解决办法
- Ubuntu16.04桌面版pxe启动实现自动安装
- android 平板 吃鸡,怎么用平板玩端游,怎么用平板玩端游吃鸡
- 重磅丨深度解读UN报告:AI新技术革命将如何重塑就业和全球化格局?
- 《关键信息基础设施安全保护条例》正式发布
- Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案
- 硬核!江西一社区干部用无人机给居民量体温:1米内测量误差仅1%
- GPU基本介绍与各GPU性能、价格比较