[SpringBoot]之入门级教学分享

news2024/12/25 12:54:22

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《SpringBoot开发》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

前言

        很久没有与老铁们分享开发知识了,在分享之前想必老铁们都有了解学习过SpringMVC、SpringSSM等等一些有关spring的相关知识,今天给大家带来的也是与Spring相关的,它就是——SpringBoot,让我们一起来探索SpringBoot的知识领域吧。

一、SpringBoot简介

1.概述

        Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是Spring Boot。

        总之,SpringBoot就是一个模版,是SpringMVC的脚手架。

2. 特点及优势

SpringBoot的特点及优势
特点或优势说明
独立运行Spring Boot可以作为独立的应用程序运行,不需要部署到其他应用服务器或容器中,真正实现了Java应用“Write Once, Run Anywhere”。
自动配置Spring Boot会自动配置大部分常用的配置,如数据源、消息队列、安全等,让开发者能够快速上手并专注于业务逻辑。
嵌入式Web服务器Spring Boot内置了Tomcat和Jetty等Web服务器,可以快速搭建Web应用程序。
提供大量starterSpring Boot提供了大量的starter,让开发者能够快速引入并使用第三方库和框架。
丰富的插件支持Spring Boot支持各种插件,如HikariCP、Elasticsearch、Redis等,方便开发者集成和管理这些插件。
良好的性能Spring Boot使用了各种优化技术,如缓存、压缩、分页等,使得应用程序具有良好的性能和响应速度。
易于监控Spring Boot提供了内置的监控功能,可以方便地监控应用程序的运行状态和性能指标。
安全性Spring Boot提供了多种安全特性,如密码加密、安全认证、跨域访问等,保障应用程序的安全性。
易于扩展Spring Boot使用了基于Java的注解配置方式,可以方便地扩展和定制其功能。
社区活跃Spring Boot拥有庞大的社区和支持,开发者可以方便地获取帮助和解决问题。

总之,Springboot是为了提升Spring开发者的工具,特点就是敏捷式、快速开发。

二、SpringBoot快速入门

1. 创建项目

        首先我们点击打开IDEA开发工具,然后我们点击New Project按钮进行创建一个新的项目文件。

         然后它会弹出一个新的窗口,我们对其进行相应的填写,点击Next进行下一步操作。

注: 在这里我有几点建议,如下:

  • 选择https://start.spring.io为下载网址路径的话是默认使用SpringBoot官网的下载路径,下载速度相对于慢,对于的Java的版本要求比较高,只允许使用Java17和Java21。所以推荐使用阿里云的下载路径网址,使用阿里云的相对于下载快,Java的版本要求低(8,11,17,21)。
  • jdk与java版本选择自己电脑上下载的版本。

阿里云下载网址路径:https://start.aliyun.com/

        然后选择SpringBoot所需的相关依赖。

        下面是我推荐使用的一些依赖:

  • Developer Tools:Lombok(提供实体对象get/set方法)、Spring Boot DevTools(类似于jreb,是热加载)
  • Web:Spring Web (相当于SpringMVC)
  • SQL:MySQL Driver(mysql数据库)、Mybatis Framework(mybatis)
  • SpringBoot的版本不要选择3以上的即可。

最后点击create创建即可。

         如果是重新安装的IDEA的话,可以去看往期的博客去查看Mybatis如何集成到IDEA开发工具中,以及所需下载的插件。

 2. 项目文件说明

        接下来我们简单说一下生成的文件作用

 

        在配置好之后我们可以启动项目,访问他自动生成的Controller层。 

        注意事项:

  • 我们编写的源码必须存放在SpringBoot自动生成的启动类的同级目录下,不管是新建文件夹还是类,都是如此否则无法识别代码。
  • application.properties文件名不能修改,推荐使用yml文件不推荐使用properties文件

3. yml文件的修改

1. 直接修改application.properties文件后缀        

        右击application.properties文件,选择重命名,将properties文件后缀修改为yml后缀,最后将文件的内容格式也修改为yml文件格式即可。

2. 下载yml文件转换插件

        我们在IDEA中下载Convert YAML and Properties File这个插件,然后右击文件会显示Convert YAML and Properties File该选项,点击即可转换。

4. 项目初步启动

        先将mysql与mybatis的依赖注释掉,否则无法启动该项目。点击自带生成的启动类启动即可。

        我们访问SpringBoot自带生成的Controller层。

        http://127.0.0.1:8080/hello?name=lisi

        说明项目成功启动并且访问。 然后将之前注释的依赖还原回去。

5. 集成Mybatis

     将MyBatis的本修改与SpringBoot版本进行修改。如下图

         因为我们采用的SpringBoot的版本是2.6.13所以我们的Mybatis的版本使用2.3.0

 

         Mybatis的依赖版本修改号之后我们进行yml文件的配置。同时连接数据库。

连接数据库 

 生成数据库表对应的实体类

 application.yml文件配置


#    配置mybatis,必须配置的mapper.xml
mybatis:
    #mapper.xml所在位置
    mapper-locations: classpath*:mappers/*xml
    #    配置别名扫描,实体类所在包名
    type-aliases-package: com.yx.sboot.pojo

#    服务访问的端口号
server:
    port: 8080
spring:
#    数据源配置
    datasource:
        url: jdbc:mysql://localhost:3306/bookshop
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver

6. 编写查询流程

6.1 查询方法

6.2 mapper.xml

 

 6.3 Service类和实现类

 

6.4 控制类

 

         我们直接启动项目,但会出现一个报错

         解决方案如下

        重新运行访问即可。 

三、 集成插件

1. 分页插件

1.1 依赖注入

1.2 yml配置

1.3 分页工具类

PageBean.java

package com.yx.sboot.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PageBean {

    private Integer page = 1;
    private Integer rows = 5;
    private Long total = 0L;
    private boolean open = true;

    public int start() {
        return (page - 1) * rows;
    }

    public int previous() {
        return Math.max(this.page - 1, 1);
    }

    public int next() {
        return Math.min(this.page + 1, maxPage());
    }

    public int maxPage() {
        return (int) Math.ceil(this.total.intValue() / (this.rows * 1.0));
    }

}

        对其控制层进行对应的修改,如下图

         启动项目访问效果

 

        注:如果你使用的分页插件版本是1.4.6以下运行可能会报一个循环错误  

2. 切面注入

PageAspect.java

package com.yx.sboot.aop;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.yx.sboot.util.PageBean;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class PageAspect {

    @Pointcut("@annotation(PageAnnotation)")
    public void cut() {
    }

    @Around("cut()")
    public Object aroundHandler(ProceedingJoinPoint point) throws Throwable {
        Object[] args = point.getArgs();
        PageBean pageBean = new PageBean().setOpen(false);
        for (Object arg : args) {
            if (arg instanceof PageBean) pageBean = (PageBean) arg;
        }
        PageHelper.startPage(pageBean.getPage(), pageBean.getRows(), pageBean.isOpen());
        Object val = point.proceed();
        if (pageBean.isOpen()) {
            Page<?> page = (Page<?>) val;
            pageBean.setTotal(page.getTotal());
        }
        return val;
    }

}

 PageAnnotation.java

package com.yx.sboot.aop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageAnnotation {
}

        切面运用,如下图所示

 

 

 

         运行结果展示

3. 整合Druid数据库连接池

3.1 依赖注入

3.2 yml文件配置

        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            # 初始化时建立物理连接的个数
            initial-size: 5
            # 最小连接池数量
            min-idle: 5
            # 最大连接池数量
            max-active: 20
            #配置获取连接等待超时的时间
            max-wait: 60000
            #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            time-between-eviction-runs-millis: 60000
            # 一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 30000
            # 用来检测连接是否有效的 sql,要求是一个查询语句
            validation-query: SELECT 1 FROM DUAL
            # 建议配置为 true,不影响性能,并且保证安全性
            test-while-idle: true
            # 申请连接时执行 validationQuery 检测连接是否有效
            test-on-borrow: true
            # 归还连接时执行 validationQuery 检测连接是否有效
            test-on-return: false
            # 是否缓存 preparedStatement,即 PsCache
            # PSCache 对支持游标的数据库性能提升巨大,比如说 oracle,而 mysql 则建议关闭
            pool-prepared-statements: true
            # 要启用 PSCache,必须配置大于0
            max-pool-prepared-statement-per-connection-size: 20
            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
            filter:
                stat:
                    merge-sql: true
                    slow-sql-millis: 5000
            # 基础监控配置
            web-stat-filter:
                enabled: true
                url-pattern: /*
                exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
                session-stat-enable: true
                session-stat-max-count: 100
            stat-view-servlet:
                enabled: true
                url-pattern: /druid/*
                reset-enable: true
                login-username: admin #设置监控页面的登录名和密码
                login-password: admin
                allow: 127.0.0.1 #deny: 192.168.1.100

         配置成功之后直接运行即可,登陆以下网址可以对其项目进行数据请求的监视

网址:德鲁伊监视器

 

        以上演示德鲁伊的使用 

4. 集成日志

4.1 yml文件配置

 运行测试结果如下

 本期博客分享到此结束

感谢老铁们的观看

三连加关注支持博主哦

 

 

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

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

相关文章

SE考研真题总结(二)

接上条&#xff0c;今天继续更新~ SE考研真题总结&#xff08;一&#xff09;-CSDN博客文章浏览阅读340次&#xff0c;点赞6次&#xff0c;收藏11次。本帖开始分享考研真题中设计【软件工程】的部分&#xff0c;预计会出5期左右&#xff0c;敬请期待~https://blog.csdn.net/js…

【NSX-T】8. 搭建NSX-T环境 —— 配置 Tier-1 网关

目录 8. 配置 Tier-1 网关Lab 说明8.1 创建 Tier-1 网关8.2 将Segment连接到 Tier-1 网关8.3 使用网络拓扑验证 Tier-1 网关配置8.4 验证 T1 网关 参考资料 8. 配置 Tier-1 网关 创建 Tier-1 网关将网段连接到 Tier-1 网关使用网络拓扑验证 Tier-1 网关配置测试东西向 L3 连接…

shopee选品分析:如何在Shopee平台上进行选品分析

在Shopee平台上进行选品分析是卖家成功的关键因素之一。通过深入了解市场、竞争对手和用户需求&#xff0c;您可以找到有潜力的产品&#xff0c;并制定出更有效的选品策略。以下是一些建议和方法&#xff0c;可以帮助您更好地进行选品分析。 先给大家推荐一款shopee知虾数据运营…

《PySpark大数据分析实战》-04.了解Spark

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

scratch遇见春天 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch遇见春天 一、题目要求 1、准备工作 2、功能实现 二、案例分析

mysql:通过INFORMATION_SCHEMA数据库查询表的元信息

使用SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA database_name AND TABLE_NAME table_name;查询某个表的元信息。其中database_name替换为数据库名称&#xff0c;table_name替换为表的名称。 例如&#xff0c;下面语句&#xff0c;查询development数据库中…

毅速:金属3D打印引领制造业进入新时代

随着科技的飞速发展&#xff0c;3D打印技术逐渐渗透到各个领域&#xff0c;为制造业带来了革命性的变革。其中&#xff0c;金属3D打印技术以其独特的优势&#xff0c;正逐渐成为制造业的新宠。 金属3D打印&#xff0c;也称为金属粉末烧结&#xff0c;是一种利用高能激光束将金属…

C语言--求数组的最大值和最小值【两种方法】

&#x1f357;方法一&#xff1a;用for循环遍历数组&#xff0c;找出最大值与最小值 &#x1f357;方法二&#xff1a;用qsort排序&#xff0c;让数组成为升序的有序数组&#xff0c;第一个值就是最小值&#xff0c;最后一个是最大值 完整代码&#xff1a; 方法一&#xff1a; …

【算法笔记】动态规划,使用最小花费爬楼梯,详细刨析。

1.题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示…

js获取快递单号小练习

目录 1、css代码 2、html代码 3、js代码 完整代码 效果图 1、css代码 .box{width: 400px;height: 300px;margin: 100px auto;position: relative;}input{width: 250px;height: 40px;outline: none;}span{display: block;position: absolute;min-width: 270px;max-width: 40…

密钥分配与密钥管理在保障通信安全方面还有什么作用?

密钥分配与密钥管理在保障通信安全方面起着至关重要的作用。在信息时代&#xff0c;通信已成为各种组织和个人的基本需求&#xff0c;而保障通信安全则是确保信息隐私、完整性和可用性的关键。下面&#xff0c;我们将详细探讨密钥分配与密钥管理在保障通信安全方面的作用。 一、…

ide启动端口占用

ide启动端口占用 处理方式 1、打开cmd 命令窗口 2、查询端口 9020 的进程 netstat -ano | findstr :9020 3、关闭相关进程 taskkill /pid 22128 /f

maven工程的pom.xml文件中增加了依赖,但偶尔没有下载到本地仓库

maven工程pom.xml文件中的个别依赖没有下载到本地maven仓库。以前没有遇到这种情况&#xff0c;今天就遇到了这个问题&#xff0c;把解决过程记录下来。 我在eclipse中编辑maven工程的pom.xml文件&#xff0c;增加对mybatis的依赖&#xff0c;但保存文件后&#xff0c;依赖的j…

beebox靶场A1 low 命令注入通关教程(中)

十一&#xff1a;sql注入 select 这个页面是一个选择性框 我们通过选择不同的选项发现上面url中的movie也在不同的变法。那再查看源码得知&#xff0c;这是一个数字型的注入点 那我们就可以构造payload在movie后面改变内容&#xff0c;首先进行爆列数payload为 1 order by 8 时…

k8s容器部署mysql5.7全流程分享

文章目录 一、前言二、打开dockerhub 看到mysql的版本为 5.7三、K8S 容器编排3.1、编写POD的相关信息3.2、编写mysql的data存储位置3.3、编写mysql的my.cnf的挂载文件3.4、编写mysql的service端口 四、启动并禁用root账户4.1 登录&#xff0c;默认密码1234564.2 配置账户权限 五…

联想笔记本如何安装Vmware ESXi

环境&#xff1a; Vmware ESXi 8.0 Vmware ESXi 6.7 联想E14笔记本 问题描述&#xff1a; 联想笔记本如何安装Vmware ESXi 解决方案&#xff1a; 1.官网下载镜像文件 https://customerconnect.vmware.com/en/downloads/search?queryesxi%208 下载 2.没有账户注册一个 …

GNSS系统概述

一.GNSS的定义 1.GNSS全称&#xff1a;全球导航卫星系统 ( Global Navigation Satellite System&#xff0c; GNSS)。 人造卫星导航定位系统是一种星基无线电导航系统&#xff0c;它以人造地球卫星为导航台&#xff0c;为陆、海、空、天各种军民载体提供全天候、高精度的位置…

cordic 算法学习记录

参考&#xff1a;b站教学视频FPGA&#xff1a;Cordic算法介绍与实现_哔哩哔哩_bilibili FPGA硬件实现加减法、移位等操作比较简单&#xff0c;但是实现乘除以及函数计算复杂度高且占用资源多&#xff0c;常见的计算三角函数/平方根的求解方式有①查找表&#xff1a;先把函数对应…

腾讯科技Hi Tech Day暨2023数字开物大会:智能涌现将通往无数的未来

腾讯科技讯 12月14日&#xff0c;以“智能涌现 数开万物”为主题的腾讯科技Hi Tech Day暨2023数字开物大会在北京国家会议中心召开&#xff0c;腾讯科技邀请知名院士、知名经济学家、知名大学教授、研究院院长、产业大咖、互联网大厂高管、知名科技领域头部企业高管、产业数字化…

猫粮哪个牌子质量好性价比高?分享十款主食冻干猫粮品牌排行榜!

一款好的、健康的主粮对猫整体有很大的提升&#xff0c;主食作为猫的日常饮食&#xff0c;直接关乎着小猫是否能摄入充分的营养&#xff0c;达到最佳的理想状态&#xff0c;因此对于每一位铲屎官来说&#xff0c;主食选得好不好至关重要。面对种类众多的主食&#xff0c;很多人…