当前位置: 首页 > news >正文

springBoot --> 学习笔记

文章目录

    • 认识 SpringBoot
      • 第一个 SpringBoot 程序
      • 彩蛋 banner (emmmmm,哈哈哈哈哈哈,牛逼!)
      • SpringBoot 配置
        • 配置文件
        • 第一个 yaml 配置 成功案例
          • yaml 存在 松散绑定
      • JSR 303 数据校验
      • 多环境配置以及文件位置
      • 访问静态资源的方式
      • 用 SpringBoot 创建 Web 项目 和 Thymeleaf 模板
      • 首页 和 图标引入 (没啥讲的,配置好自动生成。这些百度就可以解决了。略……)
      • Thymeleaf 模板引擎
        • Thymeleaf 模板(常用集合)
      • MVC配置原理
      • 聊一聊工作用的开发
      • SpringBoot整合JDBC
      • SpringBoot 整合 Druid
        • 第一步:先去 maven 下载 依赖
        • 第二步:填写配置 yml 文件
        • 第三部:写 配置文件
        • 第四部:检查
      • SpringBoot 整合 mybatis
      • SpringSecurity(安全)==> 因为比较重要,请在主页看一下,已单另区分开
      • shiro ⇒ 和 SpringSecurity 在一篇文档,主页可以找
      • Swagger
        • 什么是 Swagger(这个就可以百度了呢,我不怎么喜欢 用这个,抱歉)
      • 异步任务
        • ①开启异步
        • ② 给方法上面添加异步
      • 定时任务
        • 开启定时功能的
        • 给方法上面添加注解
      • 分布式 Dubbo + Zookeeper

认识 SpringBoot

什么是 spring ?为了解决企业级应用开发而创建的,简化开发

什么是 SpringBoot
.
其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。

①SpringBoot 默认内嵌 tomcat控制器
②不依赖idea,打出来的包不是 war ,而变成了 jar 包

什么是 微服务
.
微服务就是把一个项目拆分成独立的多个服务,并且多个服务是可以独立运行的,而每个服务都会占用线程

第一个 SpringBoot 程序

使用 idea 创建首个 SpringBoot 程序。我们可以发现,省去了太多太多的配置。就比如内置的 Tomcat 等等 。

>官方:提供了一个快速生成的网站!IDEA 继承了这个网站。

彩蛋 banner (emmmmm,哈哈哈哈哈哈,牛逼!)

在这里插入图片描述
在这里插入图片描述

哈哈哈哈哈哈嗝 ~ 。 哥们已经一阵阵 卧槽 已经喷涌而出。

SpringBoot 配置

@SpringBootApplication 定义一个:启动类

配置文件

配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们配置好了。

application.properties
语法: key = value
application.yaml
语法: key:空格 value

yaml语法(对空格要求极其高! ) ⇒ (但是,是官方推荐的一种方式):

servlet:prot: 8080

在这里插入图片描述

servlet语法:

<servlet><prot>8080</prot>
<servlet>

properties语法
在这里插入图片描述

yaml 和 properties 对比
在这里插入图片描述

yaml 可以对实体类 / 配置类 进行 赋值 。使用 @ConfigurationProperties(prefix = "xx" ) 。将配置文件的内容,映射 到 实体类 / 配置类 之中

在这里插入图片描述

第一个 yaml 配置 成功案例

牢记application.yaml 是官方规定的,不可以随意更改哦 ~~ 。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yaml 存在 松散绑定

在 yaml中,lastName 和 last-name 效果是一样的。后面跟着的字母默认是大写的。这就是松散绑定。

JSR 303 数据校验

@Validated ⇒ 开启数据效验
@Email( xxx ) ⇒ 测试是不是 e-mail,如果不是,则返回括号中的内容,进行返回

示例:
在这里插入图片描述

在这里插入图片描述

多环境配置以及文件位置

这个去网站上看一下吧,一大堆,目前来说不是很重要,先略过,后期补充。自己不是很常用。

访问静态资源的方式

可以通过一下方式进行访问静态资源: public , static , /**, resource

优先级:resources > static ( 默认 ) > public

那啥,兄弟看的课程,前面的源代码部门略过先,我觉得初学者应该先学会怎么用,然后熟练了再说 往源代码发展,要不然拽一堆看不懂的英文,还浪费时间,浪费精力,损耗兴趣。

用 SpringBoot 创建 Web 项目 和 Thymeleaf 模板

话不多说,直接上图

在这里插入图片描述

我们可以清楚的看到,此时此刻 创建了 一个Web 项目,和一个 Thymeleaf 模版

首页 和 图标引入 (没啥讲的,配置好自动生成。这些百度就可以解决了。略……)

但是我们还是要知道,只有 @Controller 是负责页面转跳的。别的注解可能会转跳不成功。反正咱们就按照规范的来吧!

Thymeleaf 模板引擎

默认是自带的。但是如果使用不了的话,或者有些功能用不了的话,尝试降低一下 jar 包。因为新版本可能会更改一些东西或属性。

下面演示一下 Thymeleaf 是什么。

在这里插入图片描述
在这里插入图片描述

怎么样,兄弟们,有没有一种 jstl 的感觉呢

Thymeleaf 模板(常用集合)

1)th:text:文本替换;
2)th:utext:支持html的文本替换。
3)th:value:属性赋值
4)th:each:遍历循环元素
5)th:if:判断条件,类似的还有th:unless,th:switch,th:case
6)th:insert:代码块引入,类似的还有th:replace,th:include,常用于公共代码块提取的场景
7)th:fragment:定义代码块,方便被th:insert引用
8)th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。
9)th:attr:设置标签属性,多个属性可以用逗号分隔

MVC配置原理

在这里插入图片描述
在这里插入图片描述

如果我们要扩展 MVC,官方建议我们这么去做 !!!

在这里插入图片描述

聊一聊工作用的开发

我们在工作用的顺序

①前端设计 ⇒ 最起码要知道前端长什么样子
②设计好数据库
③数据对接接口
④前后端联调测试

那我们在工作中需要什么呢?

①我们至少需要一个前端框架,随手可以搭配出一个网站出来
②我们要有一个自己的后台模版。可以随意的拿出来使用。

SpringBoot整合JDBC

吐槽一声:这玩意真的能让我们 很简单很简单的 解决问题。先上代码。应该能看明白的。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

look,look 成果
在这里插入图片描述

SpringBoot 整合 Druid

type: com.alibaba.druid.pool.DruidDataSource

示例:
在这里插入图片描述

以下,我们将进入详细步骤(首先准备一个差不多的后端)

第一步:先去 maven 下载 依赖

在这里插入图片描述

第二步:填写配置 yml 文件

在这里插入图片描述

源码附到下面

druid:#SpringBoot因为默认是hikari数据源所以对于其他数据源默认是不注入这些属性的,需要手动配置#druid数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 600000# 主要配置以上几个即可timeBetweenEvictionRunsMillis: 600000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters:stat:监控统计、self4j(使用log4j的记得导入log4j的依赖):日志记录、wall:防御sql注入 此处配置不能遗漏服务sql监控台不能监控sqlfilter:slf4j:enabled: truestat:enabled: truemerge-sql: trueslow-sql-millis: 5000wall:enabled: true#配置stat-view-servletstat-view-servlet:enabled: truelogin-username: adminlogin-password: 123456reset-enable: false#配置web-stat-filterweb-stat-filter:enabled: true
第三部:写 配置文件

在这里插入图片描述

源码附到下面

@Configuration
public class DruidConfig {@Bean@ConfigurationProperties(prefix = "spring.druid")public DataSource getMyDruidDataSource(){return new DruidDataSource();}//配置Druid的监控//1.配置一个管理后台的Servlet@Beanpublic ServletRegistrationBean statViewServlet(){// 记得加上"/druid/*",否则在进行登录页面的重定向过多而无法访问的问题(记得在Google浏览器才会报这个错)ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");Map<String,String> initParams = new HashMap<>();initParams.put("loginUsername","admin");initParams.put("loginPassword","123456");//默认是允许所有访问//initParams.put("allow","");
//        initParams.put("deny","192.168.31.30");bean.setInitParameters(initParams);return bean;}//2.配置一个web监控的filter@Beanpublic FilterRegistrationBean webStatFilter(){FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new WebStatFilter());Map<String,String> initParams = new HashMap<>();//配置拦截时需要排除的请求initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");bean.setInitParameters(initParams);bean.setUrlPatterns(Arrays.asList("/*"));return bean;}}
第四部:检查

让我们登录 后台 查看一下

http://localhost:8080/druid/

在这里插入图片描述

成功!

SpringBoot 整合 mybatis

话不多说,直接上图咯

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

很简单吧!!!确实省去了不少的步骤呢 。

SpringSecurity(安全)==> 因为比较重要,请在主页看一下,已单另区分开

在 WEB 开发的时候,安全永远都是第一位。

SpringSecurity 是针对 Spring 项目的安全框架,也是从 SpringBoot 底层安全默认的选型

SpringSecurity 的主要两个目标是:认证 和 授权

导入的maven:

  <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>5.1.4.RELEASE</version></dependency>
  1. 继承 WebSecurityConfigurerAdapter
  2. @EnableWebSecurity ⇒ 开始 web 安全 ⇒ 启动类

shiro ⇒ 和 SpringSecurity 在一篇文档,主页可以找

Swagger

什么是 Swagger(这个就可以百度了呢,我不怎么喜欢 用这个,抱歉)

号称世界上最流行的 API 框架。

直接运行,支持在线测试 API 接口。

支持多种语言。

异步任务

也就是异步,这个理解起来应该很简单,以前的笔记有记载,Springboot 的开启方式更简单。

①开启异步

在这里插入图片描述

② 给方法上面添加异步

在这里插入图片描述

就这么简单,hhhhh ~~ 。

定时任务

开启定时功能的
@EnableScheduling
给方法上面添加注解
@Scheduled(cron = "秒 分 小时 日 月 星期")

任务调度就是这么简单。重点是了解一下 cron表达式

具体的 cron 表达式,百度一下,很简单的 ~~,多看看例子,就可以总结出来,网上有很多的示例。

分布式 Dubbo + Zookeeper

保存一下,1天之内更新,嘿嘿

相关文章:

  • USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义
  • 职业技能大赛-单元测试笔记(assertThat)分享
  • 阿里云kafka消息写入topic失败
  • web基础:域名、网页、HTML、web版本
  • 城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例
  • python select interpreter vscode 配置
  • 【RabbitMQ】消息堆积、推拉模式
  • 手机通过安装视频采集APP软件,采用国标28181方式注册到AS-V1000视频监控平台来播放实时监控视频画面
  • 甘蔗茎节检测系统源码分享
  • Spring Boot,在应用程序启动后执行某些 SQL 语句
  • vue初学随笔
  • web群集--rocky9.2部署zabbix服务端的详细过程
  • 【JavaEE】——线程的安全问题和解决方式
  • Vue3使用hiprint——批次打印条码
  • 【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • css的样式优先级
  • Js基础知识(一) - 变量
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux链接文件
  • nfs客户端进程变D,延伸linux的lock
  • PHP变量
  • Terraform入门 - 3. 变更基础设施
  • V4L2视频输入框架概述
  • 对JS继承的一点思考
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 前端路由实现-history
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序填坑清单
  • 线性表及其算法(java实现)
  • 小李飞刀:SQL题目刷起来!
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​字​节​一​面​
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (3)STL算法之搜索
  • (4)事件处理——(7)简单事件(Simple events)
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (规划)24届春招和25届暑假实习路线准备规划
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十八)三元表达式和列表解析
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)Sublime Text3配置Lua运行环境
  • *Django中的Ajax 纯js的书写样式1
  • .a文件和.so文件
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net IE10 _doPostBack 未定义
  • .Net Memory Profiler的使用举例