用SpringBoot实现技术整合,体验SpringBoot的简化开发

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 用SpringBoot实现技术整合,体验SpringBoot的简化开发

一、前言

前面已经讲解了SpringBoot配置文件的如何使用,相信小伙伴们已经对于配置文件有了一定的了解和使用。这篇博客我们学习四种技术的整合方式。认真看下去,相信我,会收获不少!通过这次的学习,大家能够感受到SpringBoot到底有多酷炫~


二、整合Junit

需要注意的是:我们整合什么样的技术,就需要导入需要的依赖,这一点千万不能忘记,对于任意技术的整合,也是这样的原理!


先导入依赖


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


测试代码


@SpringBootTest
class Springboot0202ApplicationTests {
    @Test
    void contextLoads() {
        System.out.println("Hello~");
    }
}


运行结果

image.png

好了,可以告诉大家,这就已经成功了。小伙伴们可能就会问了,啊?这就结束了吗?这整合的也太快了吧!没错,用springboot就是这么快,就是要简化开发!


接下来看看该技术的使用细节


程序加载的配置类或者配置文件是我们前面启动程序使用的引导类。如果想手工指定引导类有两种方式,第一种方式使用属性的形式进行,在注解@SpringBootTest中添加classes属性指定配置类

image.png

具体的代码


@SpringBootTest(classes = Springboot0202Application.class)
class Springboot0202ApplicationTests {
    @Test
    void contextLoads() {
        System.out.println("Hello~");
    }
}


第二种方式回归原始配置方式,使用@ContextConfiguration注解进行,效果是一样的


具体的代码


//@SpringBootTest(classes = Springboot0202Application.class)
@ContextConfiguration(classes = Springboot0202Application.class)
class Springboot0202ApplicationTests {
    @Test
    void contextLoads() {
        System.out.println("Hello~");
    }
}


总结


导入测试对应的starter

测试类使用@SpringBootTest修饰

测试类如果存在于引导类所在包或子包中无需指定引导类

测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类


三、整合MyBatis

先导入需要的依赖


<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
</dependency>
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
</dependency>


然后配置数据源相关信息,没有这个信息就不知道连接哪一个数据库

image.png

具体的配置信息


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/bookmanager?serverTimezone=Asia/Shanghai
    username: "root"
    password: "root"


结束了,就这么多,没了。有人就很纳闷,这就结束了?对,这就结束了,SpringBoot把配置中所有可能出现的通用配置都简化了。下面写一个MyBatis程序运行需要的Dao就可以运行了


实体类


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


映射接口(Dao)


@Mapper
public interface BookDao {
    @Select("SELECT * FROM book WHERE id = #{id}")
    Book getById(Integer id);
}


测试类


@SpringBootTest
class Springboot02MybatisApplicationTests {
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        Book book = bookDao.getById(2);
        System.out.println(book);
    }
}


运行结果

image.png

查看自己的数据库,结果正确!


总结


整合操作需要导入MyBatis对应的starter

数据库连接相关信息转换成配置

数据库SQL映射需要添加@Mapper被容器识别到

MySQL 8.X驱动强制要求设置时区


四、整合MyBatis-Plus

导入对应的依赖


<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
</dependency>
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
</dependency>


配置数据源相关信息


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/bookmanager?serverTimezone=Asia/Shanghai
    username: "root"
    password: "root"


映射接口(Dao)


实体类还是Book


@Mapper
public interface BookDao extends BaseMapper<Book> {
}

测试类


@SpringBootTest
class Springboot02MybatisPlusApplicationTests {
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        Book book = bookDao.selectById(1);
        System.out.println(book);
    }
}


运行结果也是正确的!


总结


手工添加MyBatis-Plus对应的starter

数据层接口使用BaseMapper简化开发

需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标


五、整合Druid

使用SpringBoot整合了3个技术了,发现套路基本相同,导入对应的starter,然后做配置,各位小伙伴需要一直强化这套思想。下面再整合一个技术,继续深入强化此思想。


前面整合MyBatis和MyBatisPlus的时候,使用的数据源对象都是SpringBoot默认的数据源对象,下面我们手工控制一下,自己指定了一个数据源对象:Druid


导入需要的依赖


<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
</dependency>


修改配置


spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/bookmanager?serverTimezone=Asia/Shanghai
      username: "root"
      password: "root"


这是我们做的第4个技术的整合方案,还是那两句话:导入对应starter,使用对应配置。没了,SpringBoot整合其他技术就这么简单粗暴。


总结


整合Druid需要导入Druid对应的starter

根据Druid提供的配置方式进行配置

六、总结

以上就是基于SpringBoot实现技术整合的全部内容了,我们要深入理解使用什么技术就需要导入需要的依赖的思想,博主正在更新springboot多环境开发的文章,喜欢的话,支持支持博主吧~~


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
52 0
|
2月前
|
前端开发 Java
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
文章通过一个表白墙/留言墙的初级SpringBoot项目实例,详细讲解了如何进行前后端开发,包括定义前后端交互接口、创建SpringBoot项目、编写前端页面、后端代码逻辑及实体类封装的全过程。
104 3
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
393 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
239 2
|
11天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
69 13
|
19天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
43 2
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
194 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
2月前
|
存储 Java API
简单两步,Spring Boot 写死的定时任务也能动态设置:技术干货分享
【10月更文挑战第4天】在Spring Boot开发中,定时任务通常通过@Scheduled注解来实现,这种方式简单直接,但存在一个显著的限制:任务的执行时间或频率在编译时就已经确定,无法在运行时动态调整。然而,在实际工作中,我们往往需要根据业务需求或外部条件的变化来动态调整定时任务的执行计划。本文将分享一个简单两步的解决方案,让你的Spring Boot应用中的定时任务也能动态设置,从而满足更灵活的业务需求。
178 4
|
2月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
42 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。