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
接口上使用 @Mapper
,BookDao
接口改进为
@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
到此这篇关于SpringBoot从繁至简的框架基础教程的文章就介绍到这了,更多相关SpringBoot框架内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://iyu77.blog.csdn.net/article/details/126682861
相关文章
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下...2016-05-14- 这篇文章主要介绍了详解springBoot启动时找不到或无法加载主类解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
- 这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
- 这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
Spring Boot项目@RestController使用重定向redirect方式
这篇文章主要介绍了Spring Boot项目@RestController使用重定向redirect方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 首先来看下流程:流程原理: 1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的) 2.查询第三方登录表,如果不存在用户sina_id,分2...2014-05-31
- 这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
- 这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
springboot中使用@Transactional注解事物不生效的坑
这篇文章主要介绍了springboot中使用@Transactional注解事物不生效的原因,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26详解SpringBoot之访问静态资源(webapp...)
这篇文章主要介绍了详解SpringBoot之访问静态资源(webapp...),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-14- 这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
- 这篇文章主要介绍了c# 常用框架汇总,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-04-24
- 这篇文章主要介绍了springboot多模块包扫描问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解
这篇文章主要介绍了Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-18- 这篇文章主要介绍了Springboot实现多线程注入bean的工具类操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-27
Springboot+MDC+traceId日志中打印唯一traceId
本文主要介绍了Springboot+MDC+traceId日志中打印唯一traceId,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-17