SSM整合过程梳理

简介: SSM整合过程介绍

前言

框架用的好效率自然高!

🏳️‍🌈给大家推荐一个<font
color=green> Java面试刷题网站牛客网,懒羊羊祝你早日成神: Java刷题面试宝藏网站

一.SSM整合流程

1.创建工程

  • 创建一个Maven的web工程
  • pom.xml添加SSM需要的依赖jar包
  • 编写Web项目的入口配置类,实现AbstractAnnotationConfigDispatcherServletInitializer重写以下方法

    • getRootConfigClasses() :返回Spring的配置类->需要==SpringConfig==配置类
    • getServletConfigClasses() :返回SpringMVC的配置类->需要==SpringMvcConfig==配置类
    • getServletMappings() : 设置SpringMVC请求拦截路径规则
    • getServletFilters() :设置过滤器,解决POST请求中文乱码问题

2.SSM整合
Spring

SpringConfig Spring配置类
标识该类为配置类 @Configuration
扫描Service所在的包 @ComponentScan
在Service层要管理事务 @EnableTransactionManagement
读取外部的properties配置文件 @PropertySource
整合Mybatis需要引入Mybatis相关配置类 @Import

第三方数据源配置类 JdbcConfig

第三方数据源配置类 JdbcConfig
构建DataSource数据源,DruidDataSouroce @Bean @Value
构建平台事务管理器,DataSourceTransactionManager @Bean

Mybatis配置类 MybatisConfig

第三方数据源配置类 JdbcConfig
构建SqlSessionFactoryBean,设置别名扫描与数据源 @Bean
构建MapperScannerConfigurer并设置DAO层的包扫描 @Bean

SpringMVC配置类SpringMvcConfig

SpringMVC配置类 SpringMvcConfig
标识该类为配置类 @Configuration
扫描Controller所在的包 @Configuration
开启SpringMVC注解支持 @EnableWebMvc

二.整合配置

2.1添加依赖

pom.xml添加SSM所需要的依赖jar包
在这里插入图片描述

2.2创建项目包结构

  • config目录存放的是相关的配置类
  • controller编写的是Controller类
  • dao存放的是Dao接口,因为使用的是Mapper接口代理方式,所以没有实现类包
  • service存的是Service接口,impl存放的是Service实现类
  • resources:存入的是配置文件,如Jdbc.properties
  • webapp:目录可以存放静态资源
  • test/java:存放的是测试类

在这里插入图片描述

2.3创建SpringConfig配置类

在这里插入图片描述

2.4创建JdbcConfig配置类

在这里插入图片描述

2.5创建MybatisConfig配置类

在这里插入图片描述

2.6创建jdbc.properties

在这里插入图片描述

2.7创建SpringMVC配置类

在这里插入图片描述

2.8创建Web项目入口配置类

三.功能模块

3.1创建模型类

public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;

}

3.2编写Dao接口

public interface BookDao {

//    @Insert("insert into tbl_book values(null,#{type},#{name},#{description})")
    @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
    public void save(Book book);

    @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
    public void update(Book book);

    @Delete("delete from tbl_book where id = #{id}")
    public void delete(Integer id);

    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);

    @Select("select * from tbl_book")
    public List<Book> getAll();
}

3.3编写Service接口和实现类

@Transactional
public interface BookService {
    public boolean save(Book book);
    public boolean update(Book book);
    public boolean delete(Integer id);
    public Book getById(Integer id);
    public List<Book> getAll();
}
@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;
    public boolean save(Book book) { bookDao.save(book); return true; }
    public boolean update(Book book) { bookDao.update(book); return true; }
    public boolean delete(Integer id) {bookDao.delete(id); return true; }
    public Book getById(Integer id) { return bookDao.getById(id); }
    public List<Book> getAll() { return bookDao.getAll(); }
}

3.4编写Contorller类

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private BookService bookService;

    @PostMapping
    public boolean save(@RequestBody Book book) {
        return bookService.save(book);
    }

    @PutMapping
    public boolean update(@RequestBody Book book) {
        return bookService.update(book);
    }

    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Integer id) {
        return bookService.delete(id);
    }

    @GetMapping("/{id}")
    public Book getById(@PathVariable Integer id) {
        return bookService.getById(id);
    }

    @GetMapping
    public List<Book> getAll() {
        return bookService.getAll();
    }
}

四.单元测试

4.1新建测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class BookServiceTest {

}

4.2注入Service类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class BookServiceTest {
    @Autowired
    private BookService bookService;
}

4.3编写测试方法

我们先来对查询进行单元测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class BookServiceTest {

    @Autowired
    private BookService bookService;

    @Test
    public void testGetById(){
        Book book = bookService.getById(1);
        System.out.println(book);
    }

    @Test
    public void testGetAll(){
        List<Book> all = bookService.getAll();
        System.out.println(all);
    }

}
相关文章
|
6月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
71 0
|
4月前
|
关系型数据库 MySQL Java
基于SpringBoot+VuespringBoot政府管理的系统设计(源码+部署说明+演示视频+源码介绍)
基于SpringBoot+VuespringBoot政府管理的系统设计(源码+部署说明+演示视频+源码介绍)
39 0
|
JSON 前端开发 Java
SSM前后端数据操作案例八:在解决问题的道路上思考问题。
SSM前后端数据操作案例八:在解决问题的道路上思考问题。
68 0
|
前端开发 NoSQL 数据库
项目重点知识点详解
项目重点知识点详解
|
SQL JSON 前端开发
SSM前后端数据操作案例七:在解决问题的道路上思考问题。
SSM前后端数据操作案例七:在解决问题的道路上思考问题。
69 0
|
XML 前端开发 Java
SSM整合完整流程
SSM整合完整流程
100 0
|
Java jenkins 应用服务中间件
价值不言而喻,SSM项目升级springBoot复盘,又是一个极小的细节
价值不言而喻,SSM项目升级springBoot复盘,又是一个极小的细节
117 0
价值不言而喻,SSM项目升级springBoot复盘,又是一个极小的细节
|
XML 存储 Java
【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机
【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机
157 0
【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机
|
Java Maven
从原理和源码梳理Springboot FatJar 的机制
从原理和源码梳理Springboot FatJar 的机制
268 0
从原理和源码梳理Springboot FatJar 的机制
|
前端开发 Java 数据库连接
最清晰的SSM整合
作为Java程序员,SSM是很重要的基础。下边介绍最清晰的SSM整合 Spring 、SpringMVC、Mybatis 三大框架整合相关配置,三层分开配置 maven 的 pom 文件依赖。
160 0
下一篇
无影云桌面