Spring Boot详细笔记

网页左边,向下滑有目录索引,可以根据标题跳转到你想看的内容

spring boot概述

  1. spring boot是微服务的基础,但它还不算一个微服务,它的作用仅仅是整合了spring的一些配置文件,可以让你快速的搭建一个spring项目,spring boot可以快速开发一个Spring应用。
  2. spring cloud是协调治理全局的微服务。
  3. 前后端分离,就是前端由前端工作人员开发,而后端,采用微服务的形式,分为多个模块,每个模块可以由单独团队开发。
  4. 比如搜索功能,就可以做成一个独立的模块,也就是一个微服务,每个微服务都可以由一个专门的团队负责,不同模块之间互不影响,每个模块只需要提供可调用接口即可,当某个项目需要用到某一个功能时,只需使用某一微服务即可,比如,百度有搜索功能,可以使用搜索功能微服务提供的接口,淘宝有搜索功能,同样可以使用这个微服务实现,比如将某个微服务当成电磁炉,电磁炉有加热功能,当需要煮面时,可以使用这个电磁炉,当需要吃火锅时,也可以使用这个电磁炉,而煮面,火锅,是完全不同的两个项目,但使用的都是电磁炉,这就是分模快微服务

spring boot常用jar包依赖(供日后快速查询使用)

  1. spring boot父依赖:spring-boot-starter-parent
  2. spring boot启动包:spring-boot-starter-web
  3. spring boot JDBC:spring-boot-starter-jdbc
  4. spring boot 整合 myBatis:mybatis-spring-boot-starter
  5. thymeleaf依赖:thymeleaf

spring boot的常用注解(供日后快速查询使用)

  1. @SpringBootApplication:表示指定类为启动类
  2. @MapperScan(“mapper”):配置指定mybatis映射文件mapper
  3. @Configuration:表示指定类为配置类,用来实现java配置,代替xml配置
  4. @Bean:标识配置类中指定方法的返回值是一个spring容器的Bean对象,声明在方法上,将方法返回值加入IOC容器,代替传统< bean>标签
  5. @Value : 注入属性
  6. @PropertySource : 指定外部属性文件
  7. @ConfigurationProperties(prefix = “jdbc”):引用yml或properties文件中内容,需要指定文件中前缀,然后可以根据实体类或者方法(取决于声明在实体类上面还是方法上面)中的set方法,直接赋值相应配置信息,比如jdbc.username,就会调用setUserName方法赋值,没有对应属性就不赋值
  8. @EnableConfigurationProperties(“配置类名”):引用指定配置类

yml文件常用配置(供日后快速查询使用)

  1. 配置服务器端口号
    在这里插入图片描述
  2. 配置debug日志
    在这里插入图片描述
  3. 配置HikariCP连接池(spring数据源)在这里插入图片描述
  4. 配置视图解析器
    在这里插入图片描述
  5. 配置mybatis开启驼峰转换
    在这里插入图片描述
  6. 配置mybatis找到mapper映射文件,结果集映射是为了在mapper文件中不写包名在这里插入图片描述

一、spring boot基础概念及操作

spring boot 的特点
  1. 无需web.xml,这也是为什么在servlet3.0中去除web.xml的原因
  2. 不需要配置springMVC的配置文件,前端控制器
  3. 集成了tomcat,无需用户自己配置
  4. 集成JSON,支持Rest风格url
  5. spring boot就是一个集成了spring各种组件的快速开发框架,可以快速搭建一个spring项目

1. 从头搭建一个SpringBoot项目

  1. 创建Maven工程

idea可以直接生成一个spring boot项目,但为了讲解,我们选择重头使用maven搭建 在这里插入图片描述

  1. 使spring boot 为父工程:

如果想使用SpringBoot必须让springBoot成为父工程,建好Maven工程后,我们可以选择自动导入所引用包(Enable Auto-import),或者选择Import Changes 仅仅导入我刚刚所做改变的包 在这里插入图片描述在这里插入图片描述

  1. 导入web启动包

web启动包可以为我们快速启动一个web项目 在这里插入图片描述

  1. 建立spring boot 启动类

spring boot需要一个启动类,来启动spring boot项目,此类必须在最高级目录(保证其他类都在启动类的子文件夹下,因为spring boot自动扫描子目录,如果你放在低级目录,那么高级目录就自动扫描不到,需要你在启动类添加注解,手动扫描) 在这里插入图片描述在这里插入图片描述在这里插入图片描述
5 .建立控制层,处理请求
建立Controller层,处理客户端请求在这里插入图片描述在这里插入图片描述

为什么spring boot 可以快速搭建项目

  1. 首先,在早期的spring中,还没有注解的概念,所以,使用spring全部都是用xml文件配置,而当时一个项目有几十各类,相应的就要配置几十个xml文件
  2. 之后在spring2.0的时候,出现了注解,这时注解不是很完善,所以大多数人使用的时候,都是重要的用xml文件配置,一些简单又重复的就使用注解,二者结合使用
  3. 之后spring3.0,注解已经完善,这时spring推荐大家使用注解,不要再写xml了,这一出现直接导致我们的web工程甚至都不用配置web.xml了,当时的servlet3.0版本也彻底抛弃了web.xml,但是在中国并不流行,所以依然使用2.0的技术。
  4. 而现在已经到了spring5的时期,spring已经有了很大改变,出现了java配置,而目前大多数人,也坦然接受了java配置的真香定律,java配置简直太香了,用了以后,除了看源码,维护老项目(大多使用ssm框架开发),已经没什么理由能让我放弃spring boot,回去配置xml
  5. 而spring boot 就是因为配置了大量注解,这些注解会自动帮我们配置好内些必须的,复杂的配置内容

2. 使用java配置的方式配置数据源

java配置

  • java配置就是通过一些java类配合注解形成java配置,是在spring3.0以后的产物,在springBoot中有了更好的配置
  • java配置常用注解
    • @Configuration :声明一个类为配置类,代替传统xml
    • @Bean : 声明在方法上,将方法返回值加入IOC容器,代替传统< bean>标签
    • @Value : 注入属性
    • @PropertySource : 指定外部属性文件

配置c3p0数据源(理解什么是java配置即可,数据源spring boot集成了日本研发的目前最好的数据源连接池)

  1. 引入c3p0和mysql依赖在这里插入图片描述
  2. 外部文件中配置连接信息在这里插入图片描述
  3. 用java配置原来在xml中的内容在这里插入图片描述
  4. 编写Controller,利用debug测试在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. 使用spring boot 获取配置文件内容(必须掌握三种方式)

为了方便我们使用一个工具lombok,自动为我们生成get、set、toString等等方法配置完成需要重启idea
  1. 安装插件,配置依赖在这里插入图片描述在这里插入图片描述
  2. 报错解决(以下过程中有这个错误,请进行如下设置)
    在这里插入图片描述在这里插入图片描述
spring boot指定的配置文件
  1. 为外部文件添加application前缀,因为spring boot会自动将application为前缀的文件识别为spring boot配置文件
    在这里插入图片描述
  2. 新建一个类,存储这些里面的值
  1. 用到的注解介绍
  1. @ConfigurationProperties(“前缀”) :把外部配置文件封装成实体类,按实体类里面属性名是否和配置文件中名字一致来执行封装
  2. @Data :lombok工具中的注解,自动为我们生成需要的一切get,set,toString方法。
    在这里插入图片描述

1. 直接通过方法获取

  1. 注入配置实体类,然后通过get set方法获取值
    在这里插入图片描述
  2. 测试在这里插入图片描述

2. 自动注入配置实体类

  1. 我们无需让spring扫描到这个类了
    在这里插入图片描述
  2. 使用@EnableConfigurationProperties(配置实体类的class对象)注解,自动将实体类注入到这个注解的作用范围(此注解的作用范围为它注解的类)
    在这里插入图片描述

3. 直接在需要的地方,实时获取配置文件中的值

  1. 我们不需要配置实体类了,这个类没用了
    在这里插入图片描述
  2. 通过注解@ConfigurationProperties(prefix=“前缀”),将配置文件中内容,按照名称,自动调用相应的set方法注入
    在这里插入图片描述

4. 使用*.yaml或*.yml文件配置属性(如果与后缀名为properties同时存在,那么配置合并,若有同名属性,按properties为准)

yml文件可以放置的位置,以及优先级
在这里插入图片描述
下面是file文件夹位置,而classpath就是我们上面一直使用的resources文件夹在这里插入图片描述

使用yml文件
  1. 创建一个后缀名为yml的文件,其他操作都一样在这里插入图片描述
  2. 如果这个文件要对应到实体类,那么结构如下 在这里插入图片描述

二、spring mvc配置

1. 配置拦截器

  1. 配置日志功能 在这里插入图片描述
  2. 配置自定义拦截器在这里插入图片描述
    在这里插入图片描述
  3. 使用java配置代替xml配置springMVC,创建一个类继承WebMvcConfigurer在这里插入图片描述在这里插入图片描述
  4. 将我们上面配置的拦截器添加到spring MVC配置类中,也就是告诉spirng MVC这个拦截器是你的在这里插入图片描述
  5. 测试(可见在hello请求前后都打印了拦截器的日志信息)在这里插入图片描述

2. 配置视图控制器

视图控制器作用就是,我们访问一个地址,然后帮我们跳转到指定资源,或者静态页面
  1. 设置静态页面或者写一个静态路径(这里我们不使用静态页面,因为需要依赖于模板引擎的依赖,但是现在都是前后端分离,已经不常用这些东西了(但是我们后面还是会讲一下),所以我们知道视图控制器是干嘛的就可以了)在这里插入图片描述
  2. 配置视图控制器在这里插入图片描述
@Configuration
public class MvcConfig implements WebMvcConfigurer {
    /*拦截器*/
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**");
    }
    /*视图控制器*/
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        //addViewController(url)添加一个视图控制器,当访问指定url时跳转到指定页面
        //setViewName(静态资源路径),当用户通过浏览器访问上面设置的url时,自动跳转到这里指定的页面
        registry.addViewController("/test").setViewName("hello");
    }
}
thymeleaf模板
  1. 依赖在这里插入图片描述
<dependency>
     <groupId>org.thymeleaf</groupId>
     <artifactId>thymeleaf</artifactId>
     <version>3.0.12.RELEASE</version>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
     <version>2.3.9.RELEASE</version>
 </dependency>
  1. 编写静态页面,测试在这里插入图片描述

3. 国际化配置

  1. 设置统一编码格式utf-8在这里插入图片描述在这里插入图片描述
  2. 创建国际化文件,创建login和login_zh_CN文件后会自动识别国际化操作(如果最后国际化失败,尝试将i8n文件夹名字改为i18n)在这里插入图片描述
  3. 编辑文件在这里插入图片描述在这里插入图片描述
  4. 配置文件路径在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

三、操作数据库

1. 配置JDBC数据源

使用HikariCP连接池,这是日本开发的连接池,速度极快,碾压c3p0,所以大多数厂商使用此连接池,spring默认支持此连接池,封装在JDBC模块中
  1. 添加springJDBC依赖在这里插入图片描述
  2. 配置连接池在这里插入图片描述

2. 配置MyBatis整合

和ssm框架一样,MyBatis自己提供了整合包mybatis-spring-boot-starter
  1. 引入依赖在这里插入图片描述
  2. 开启mybatis驼峰命名在这里插入图片描述
  3. 找到mapper映射文件(需要说的是,单表操作的mapper,因为sql没什么可优化的,所以一般我们都使用通用mapper,多表才自己写mapper映射)在这里插入图片描述
  4. 配置到指定包找类别名在这里插入图片描述
  5. 得到所有mapper映射的接口在这里插入图片描述

3. 使用MyBatis的通用mapper(支持单表增删改查等操作)

  1. 引入依赖(引入通用mapper后,mybatis整合包,和JDBC包就自动引入了,所以我们可以将上面引入的两个包删掉)在这里插入图片描述
  2. mapper接口继承mapper类在这里插入图片描述
  3. 使用通用mapper中的mapper扫描注解在这里插入图片描述
  4. 指定数据库中表的名字在这里插入图片描述
  5. 指定主键,如果主键设置了自动自增,也需指定在这里插入图片描述
  6. 指定某些字段不作为sql语句字段名使用在这里插入图片描述
  7. 编写service层在这里插入图片描述
  8. 加事务在这里插入图片描述
  9. 测试在这里插入图片描述在这里插入图片描述

四、源码TODO(日后更新)

一个完整的外卖系统,包括手机端,后台管理,api 基于spring boot和vue的前后端分离的外卖系统 包含完整的手机端,后台管理功能 技术选型 核心框架:Spring Boot 数据库层:Spring data jpa/Spring data mongodb 数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb4.0(不要使用最新版4.2) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理系统 flash-waimai-api java接口服务 flash-waimai-core 底层核心模块 flash-waimai-generate 代码生成模块 快速开始 数据存储采用了mysql和mongodb,其中基础管理配置功能数据使用mysql,业务数据使用mongodb存储。 创建mysql数据库 CREATE DATABASE IF NOT EXISTS waimai DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE USER 'waimai'@'%' IDENTIFIED BY 'waimai123'; GRANT ALL privileges ON waimai.* TO 'waimai'@'%'; flush privileges; mysql数据库创建好了之后,启动flash-waimai-api服务,会自动初始化数据,无需开发人员自己手动初始化数据 安装mongodb并创建数据库:flash-waimai 使用mongorestore命令 导入mongodb数据,由于测试数据量较大,打包放在了百度云盘:链接:https://pan.baidu.com/s/1mfO7yckFL7lMb_O0BPsviw 提取码:apgd 下载后将文件解压到d:\elm,如下命令导入数据: mongorestore.exe -d flash-waimai d:\\elm 下载项目测试数据的图片(商家和食品图片):链接:https://pan.baidu.com/s/1rvZDspoapWa6rEq2D_5kzw 提取码:urzw ,将图片存放到t_sys_cfg表中system.file.upload.path配置的目录下 启动管理平台:进入flash-waimai-manage目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run dev启动成功后访问 http://localhost:9528 ,登录,用户名密码:admin/admin 启动手机端:进入flash-waimai-mobile目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run local启动成功后访问 http://localhost:8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值