【SpringBoot】SSM“加速器”SpringBoot初体验

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SpringBoot 初始

前言

整理完SSM的零零碎碎,也是按部就班开启了SpringBoot之旅,Boot的引入加速了传统的SSM开发,给我最深的一个印象就是它的内部自动集成了Tomcat,当我们运行Application类时,资源就被自动部署到了Tomcat中,其次,是起步依赖的引入,也极大的简化了SSM文件繁琐的配置工程。
在这里插入图片描述
以前说过,从繁至简是贯彻框架学习的原始真解,Boot的出现更是这一真理的进一步论证!

一.SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
在这里插入图片描述
按下这个按钮,一切仿佛都被加速,相比于曾经的SSM开发
我们通过一个经典的MVC案例来好好感受一下Boot带给我们的极速体验吧

1.还是老套路,类头上写上注解配置请求路径,编写一个GET请求,并且return做出反馈

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

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }

}

2.启动项目的引导类
在这里插入图片描述
3.启动SpringBoot项目过后的运行窗口
在这里插入图片描述
4.我们利用Postman来进行一个简单的接口测试,测试一下项目功能是否健全
在这里插入图片描述

二.起步依赖的引入

为了解决因插件版本不同而导致的冲突问题,boot为我们事先配置好了许多不同版本的插件,当我们使用时,选择既定的boot版本即可自动匹配一套完美契合的插件,极大提高了配置难度。
在这里插入图片描述
曾经,懒羊羊刚学习Javaweb时,就因为忽略了tomcat和servlet—api的版本一致问题导致MVC的项目无论如何也运行不成功,可以说是走了很多弯路啊~
不过现在看来SpringBoot的出现,提高开发效率的同时也为我们屏蔽掉了大量不必要的麻烦

三.服务器切换

我们都知道boot内置了tomcat,每当创建好一个web项目,默认都是他,如何更改内置的服务器呢?
这需要用到maven中的排除依赖,找到web插件所在的依赖,排除掉Tomcat即可,就像这样

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

然后我们更换上Jetty服务器的依赖即可完成boot项目服务器切换

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

四.多环境开发

多环境开发配置也是必会的一项操作,以yaml格式的配置文件为例,分别对生产环境、测试环境、开发环境三者之间进行切换

#设置启用的环境
spring:
  profiles:
    active: ${profile.active}

---
#开发环境
spring:
  profiles: dev
server:
  port: 55
---
#生产环境
spring:
  profiles: pro
server:
  port: 66
---
#测试环境
spring:
  profiles: test
server:
  port: 77
---

五.整合Junit

在SSM的基础上Spring boot整合junit就变得非常简单,注入测试的类,写上@Test注解即可

@SpringBootTest(classes = SpringbootTestApplication.class)
class SpringbootTestApplicationTests {
    @Autowired
    private BookService bookService;
    @Test
    public void save() {
        bookService.save();
    }
}

为何会如此简便?
那是因为我们的boot引导类充当了配置类,@SpringBootApplication中封装了包扫描的注解(追源码还是会发现@Configuration注解),引导类所在位置的包会全部被扫描
在这里插入图片描述
所以说boot在这方面并没有带来什么新颖的功能,而是进一步封装了SSM的配置

六.整合Mybatis

6.1定义实体类

com.yu7daily.domain 包下定义实体类 Book,内容如下

public class Book {
    private Integer id;
    private String name;
    private String type;
    private String description;
    
    //setter and  getter
    
    //toString
}

6.2定义dao接口

com.yu7daily.dao 包下定义 BookDao 接口,内容如下

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

6.3定义测试类

test/java 下定义包 com.yu7daily ,在该包下测试类,内容如下

@SpringBootTest
class SpringbootMybatisApplicationTests {

    @Autowired
    private BookDao bookDao;

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

6.4编写配置

我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。所以这部分需要在 SpringBoot 的配置文件中进行配合。

application.yml 配置文件中配置如下内容

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root

6.5测试

运行测试方法,我们会看到如下错误信息

org.springframework.beans .factory.UnsatisfiedDependencyException: Error creating bean with name

错误信息显示在 Spring 容器中没有 BookDao 类型的 bean。为什么会出现这种情况呢?
MyBatis是通过扫描接口利用自动代理创建对象交给Spring的IOC来集中管理,我们从始至终好像没有定义扫描的接口,所以我们需要指出扫描的接口!而我们要解决这个问题需要在BookDao 接口上使用 @MapperBookDao 接口改进为

@Mapper
public interface BookDao {
    @Select("select * from ssm_db where id = #{id}")
    public Book getById(Integer id);
}
==注意:==

SpringBoot 版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区 jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC,或在MySQL数据库端配置时区解决此问题

6.6使用Druid数据源

现在我们并没有指定数据源,SpringBoot 有默认的数据源,我们也可以指定使用 Druid 数据源,按照以下步骤实现

  • 导入 Druid 依赖

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.16</version>
    </dependency>
  • application.yml 配置文件配置

    可以通过 spring.datasource.type 来配置使用什么数据源。配置文件内容可以改进为

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
        username: root
        password: 284650
        type: com.alibaba.druid.pool.DruidDataSource
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
349 37
|
6月前
|
JavaScript Java 测试技术
基于小程序的教育培训微信小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的教育培训微信小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
47 1
|
6月前
|
JavaScript Java 测试技术
基于小程序的外卖小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的外卖小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
44 2
|
6月前
|
JavaScript Java 测试技术
松江大学城就餐推荐系统+ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
松江大学城就餐推荐系统+ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
41 1
|
6月前
|
JavaScript Java 测试技术
食堂订餐小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
食堂订餐小程序ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
38 1
|
6月前
|
JavaScript Java 测试技术
基于微信小程序的校园综合服务平台ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的校园综合服务平台ssm+springboot+vue.js附带文章和源代码设计说明文档ppt
59 1
|
6月前
|
Java 关系型数据库 MySQL
SpringBoot整合JUnit、MyBatis、SSM
SpringBoot整合JUnit、MyBatis、SSM
41 4
|
6月前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
|
6月前
|
XML Java 关系型数据库
springboot整合ssm详细讲解
springboot整合ssm详细讲解
151 1
|
Java 数据库连接 Maven
使用maven快速搭建SpringBoot的SSM项目(下)
使用maven快速搭建SpringBoot的SSM项目(下)
84 0