springBoot --> 学习笔记

news2024/12/27 0:18:37

文章目录

    • 认识 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: 5
      minIdle: 5
      maxActive: 20
      maxWait: 600000
      # 主要配置以上几个即可
      timeBetweenEvictionRunsMillis: 600000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true

      #配置监控统计拦截的filters:stat:监控统计、self4j(使用log4j的记得导入log4j的依赖):日志记录、wall:防御sql注入 此处配置不能遗漏服务sql监控台不能监控sql

      filter:
        slf4j:
          enabled: true
        stat:
          enabled: true
          merge-sql: true
          slow-sql-millis: 5000
        wall:
          enabled: true
      #配置stat-view-servlet
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: 123456
        reset-enable: false
      #配置web-stat-filter
      web-stat-filter:
        enabled: true
第三部:写 配置文件

在这里插入图片描述

源码附到下面

@Configuration
public class DruidConfig {
     @Bean
    @ConfigurationProperties(prefix = "spring.druid")
    public DataSource getMyDruidDataSource(){
        return new DruidDataSource();
    }

    //配置Druid的监控
    //1.配置一个管理后台的Servlet
    @Bean
    public 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
    @Bean
    public 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天之内更新,嘿嘿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教你制作一个二维码就能查分的系统

学生和家长对于成绩查询的需求日益增长。为了满足这一需求&#xff0c;很多学校和老师开始使用二维码查询系统&#xff0c;以提高效率和保护隐私。以下内容就是如何制作一个简单易用的成绩查询二维码系统的步骤&#xff1a; 1. 准备电子表格 老师需要准备一个包含学生成绩的电…

(已解决)vscode如何传入argparse参数来调试/运行python程序

文章目录 前言调试传入参数运行传入参数延申 前言 以前&#xff0c;我都是用Pycharm专业版的&#xff0c;由于其好像在外网的时候&#xff0c;不能够通过VPN来连接内网服务器&#xff0c;我就改用了vscode。改用了之后&#xff0c;遇到一个问题&#xff0c;调试或者运行python…

基于Qt5.12.2开发 MQTT客户端调试助手

项目介绍 该项目是一个基于 Qt 框架开发的桌面应用程序&#xff0c;主要用于与 MQTT 服务器进行连接和通信。通过该应用&#xff0c;用户可以连接到 MQTT 服务器&#xff0c;订阅主题、发布消息并处理接收到的消息。项目使用 QMqttClient 类来实现 MQTT 协议的客户端功能&…

第128集《大佛顶首楞严经》

《大佛顶如来密因修正了义诸菩萨万行首楞严经》。监院法师慈悲&#xff0c;诸位法师&#xff0c;诸位同学&#xff0c;阿弥陀佛&#xff01; 请大家打开讲义296面。 庚一、总示阴相&#xff08;分四&#xff1a;辛一、结前行阴尽相。辛二、正明识阴区宇。辛三、悬示识阴尽相。…

通过frp 免费内网穿透,端口转发

1.准备工作 (1)拥有一台有公网IP的服务器(系统可以是windows/macos/linux),服务器可以使用云厂商购买的服务器 (2)从下面链接下载最新版本的frp安装包,客户端和服务端是同一个tar包 https://github.com/fatedier/frp/releases 服务端机器A-有外网ip的作为服务端 服务端机器B-需…

前端接口415状态码【解决】

前端接口415状态码【解决】 一、概述 415状态码是HTTP协议中的一个标准响应状态码&#xff0c;代表“Unsupported Media Type”&#xff08;不支持的媒体类型&#xff09;。当客户端尝试上传或发送一个服务器无法处理的媒体类型时&#xff0c;服务器会返回这个状态码。这通常意…

二维四边形网格生成算法:paving(五)缝合 Seaming 与 闭合检测 Closure Check

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 参考论文&#xff1a;Paving: A new approach to automated quadrilateral mesh generation 关注公众号回复paving可以获得文章链接 paving&#xff08;一&#xff0…

python如何将字符转换为数字

python中的字符数字之间的转换函数 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字…

Pytest测试实战|执行常用命令

Pytest测试实战 本文章主要详细地阐述下Pytest测试框架执行TestCase常用命令。 按分类执行 在Pytest测试框架中按照分类执行的命令为“-k”&#xff0c;它的主要特点是按照TestCase名字的模式来执行&#xff0c;在编写具体的TestCase的时候&#xff0c;都会编写每个TestCase…

el-table表格点击该行任意位置时也勾选上其前面的复选框

需求&#xff1a;当双击表格某一行任意位置时&#xff0c;自动勾选上其前面的复选框 1、在el-table 组件的每一行添加row-dblclick事件&#xff0c;用于双击点击 <el-table:data"tableData"ref"tableRef"selection-change"handleSelectionChange&q…

常用组件详解(五):torch.nn.BatchNorm2d()

文章目录 一、基本原理二、函数说明 在卷积神经网络的卷积层之后通常会添加torch.nn.BatchNorm2d()进行数据的归一化处理&#xff0c;将数据规范到均值为0&#xff0c;方差为一的分布上&#xff0c;使得数据在进行Relu时不会因为数据过大而导致网络性能的不稳定。 一、基本原理…

基础实践:使用JQuery Ajax调用Servlet

前言 本博客介绍最简单的JQuery&#xff08;原生JS的封装库&#xff09;使用Ajax发送请求&#xff0c;并通过对应的servlet响应数据&#xff0c;并在页面显示&#xff0c;并且servlet响应的数据来自MySQL数据库。 实现需求&#xff1a;在前端页面的输入框中输入要注册的用户名&…

2024年_ChatGPT 及类似的人工智能技术带来的影响与改变 怎样利用 ChatGPT 提高学习效率

人工智能技术给我们带来了什么的改变&#xff1a; 工作方式与效率&#xff1a; 信息检索与处理&#xff1a;能快速整合大量信息&#xff0c;提供较为准确的答案和建议&#xff0c;帮助人们更高效地获取所需知识&#xff0c;提升信息检索和处理的速度与质量&#xff0c;比如在做…

Git版本控制的使用教程

使用Git进行项目代码的版本控制&#xff0c;具体操作&#xff1a; 1). 创建Git本地仓库 当Idea中出现&#xff1a; 说明本地仓库创建成功。 2). 创建Git远程仓库 访问Gitee - 基于 Git 的代码托管和研发协作平台&#xff0c;新建仓库 点击 创建 3). 将本地文件推送到Git远程…

Java【根据数据库生成实体文件】

下载插件 安装 MybatisX 配置包 Scratches and Consoles -> Extensions&#xff0c;Reload from Disk 后&#xff0c;会出现 MyBatisX 文件夹&#xff0c;将模板配置文件夹&#xff08;我的模板配置文件夹叫做 a-custom&#xff09;放入该文件夹下的 templates 文件夹内&am…

【欧拉函数变化】[SDOI2012] Longge 的问题

求和 gcd(i,j) 转化为 k*gcd(i/k,j/k) 1 (i,j%k 0)。 本质就是利用互质转化到了欧拉函数的领域上。 [SDOI2012] Longge 的问题 - 洛谷 转自小粉兔 #include<bits/stdc.h> #define int long long using namespace std; unordered_map<int,int>pd; long long…

天润融通发布微藤智能体平台,中国客户联络正式进入“智能体时代”

9月19日&#xff0c;以“云启智跃&#xff0c;产业蝶变”为主题的2024云栖大会在杭州正式开幕。大会持续三天&#xff0c;聚焦AI时代的技术升级与实践应用&#xff0c;设有三大主论坛、400多个分论坛&#xff0c;并开放4万平方米的智能科技展区&#xff0c;展示全球百余款AI应用…

20_BERT微调训练

1.导包 import json #通过路径加载预训练模型 import os import torch from torch import nn import dltools2.加载预训练模型BERT函数 def load_pretrained_model(pretrained_model, num_hiddens, ffn_num_hiddens,num_heads, num_layers, dropout, max_len, devices):dat…

David律所代理Jose Martin幽默水果版权首发维权,尚未TRO

案件基本情况&#xff1a;起诉时间&#xff1a;2024/9/18案件号&#xff1a;2024-cv-08484原告&#xff1a;Jose Martin原告律所&#xff1a;David起诉地&#xff1a;伊利诺伊州北部法院涉案商标/版权&#xff1a;原告品牌简介&#xff1a;西班牙的卓越艺术家Jose Martin以他非…

linux 下80端口被占用

先看报错&#xff1a; [rootlocalhost ~]# nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address alread…