快速入门,springboot知识点汇总

学习 springboot 应该像学习一门编程语言一样,首先要熟练掌握常用的知识,而对于不常用的内容可以简单了解一下。先对整个框架和语言有一个大致的轮廓,然后再逐步补充细节。

前序:

Spring Boot 通过简化配置和提供开箱即用的特性,大大加快了 Spring 应用的开发过程。

1、构建一个 Spring Boot 项目

打开idea, 选择新建项目, 生成器选择spring initiallzr, 类型选择Maven, 然后点击下一步, 依赖项可以选个spring web

在这里插入图片描述

整个 项目结构 如下

myproject
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myproject
│   │   │               └── MyprojectApplication.java
│   │   └── resources
│   │       └── application.properties
└── pom.xml

正常初始化一个项目时, 我们还需要导入很多依赖, 而且过程很繁琐

而maven就可以简化这个导入依赖这个过程,我们可以通过 Maven 配置文件(pom.xml),减少了依赖管理的复杂性。

2、导入依赖

进入 maven官网, 在搜索框中可以搜索到我们需要的依赖。

比如我们搜索 Spring Boot Starter JDBC这个依赖, 选择版本号, 把下面的代码粘贴到pom.xml文件中的dependencies标签中就算是导入依赖。(记得刷新才可以)
在这里插入图片描述

2.1 常用依赖

下面是一些常用到的依赖

  1. MySQL Connector/J

MySQL 官方提供的 JDBC 驱动程序,用于 Java 应用程序与 MySQL 数据库之间的连接和通信。

  1. Spring Boot Starter JDBC

可以快速地配置和使用 JDBC 数据库连接。通俗的来说, 我们引入这个依赖后就可以快速的让程序连接到数据库, 并且通过代码来编写sql语句, 控制数据库。

连接数据库:
我们可以通过在application.properties配置文件中配置如下信息就可以连接到数据库

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. Project Lombok

可以让我们通过注解来减少样板代码的编写, 样板代码一般来说就是pojo类的get, set, 构造函数 ,equals,hashCode,toString等等。(下面会讲到pojo类)

  1. mybatis-plus-boot-startermybatis-plus-generator

MyBatis-Plus相关的依赖。

MyBatis-Plus 提供了一套通用的 Mapper 接口,通过继承这些接口,能够实现对单表的 CRUD 操作,无需编写重复的 SQL 语句。(相当于是它帮我们写好了很多mapper层的接口, 下面会讲到mapper)

如果加入上面两个mybatisplusspring不能正常使用mybatisplus的话可以加入这个依赖mybatis-spring

  1. spring-boot-starter-security

Spring Security 的相关依赖

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。通过简单的配置和注解,开发者可以实现复杂的身份验证和授权逻辑,保护应用程序的安全。也就是说通过它我们可以轻松的实现web上登录注册。

可以在下面讲到的时候再添加这个依赖, 不然要登录才能访问

3、 应用的关键层次和功能

POJO 层定义数据对象和封装数据。
Mapper 层与数据库交互,执行数据操作。
Service 层处理业务逻辑,调用 Mapper 层实现数据操作。
Controller 层接收和处理用户请求,调用 Service 层获取数据并返回响应。

我们一般会在myproject(上面层级结构中的)文件夹下分别创建pojomapperservicecontroller文件夹, 然后在文件夹中写java类

下面的样例代码中会出现很多注解, 它具体什么作用可自行查阅, 不同注解具体什么作用直接背过就行了, 初学阶段不要深究!!!

  1. pojo

pojo中文件名(pojo类名)一般定义成和数据库中的表名相同,一般把变量名定义成和该表中的字段名相同,这样springboot就会自动的把这个pojo和类的变量直接映射到数据库中对应的表和列中。

这样外部要访问数据库就可以通过这个pojo类的get,set方法获取修改该pojo类对应的数据库中的表。 但是每个pojo类都要写这些方法难免会有些繁琐, 我们可以通过上面下载的依赖Project Lombok来自动完成, 只需要在pojo类上面写上@Data @NoArgsConstructor @AllArgsConstructor这三个注解, 这个依赖就会自动帮我们生成

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String username;
    private String email;
    
    // Getters and setters
    // toString, equals, hashCode 因为有上面三个注解, 所以会自动生成, 不需要手写
}
  1. Mapper

类名和表名相同, 实现不同表的基本sql查询,包括增删改查等操作。
(上面讲的MyBatis-Plus写好的有很多接口, 我们只需要继承MyBatis-Plus写好的接口就行, 可以参考 MyBatis-Plus官网 )

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    User findById(Long id);

    // 其他 SQL 操作方法
}
  1. Service

调用 Mapper 层的方法进行数据访问,处理返回结果并进行适当的业务处理。类名根据具体的业务定义。

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User getUserById(Long id) {
        return userMapper.findById(id);
    }
    
    // 其他业务逻辑方法
}
  1. Controller

接收来自客户端的 HTTP 请求, 也就是不同url调用不同的函数, 函数对应着业务的逻辑

根据业务逻辑 调用相应的 Service 层方法, 然后把处理结果返回,通常返回 JSON、HTML 页面或其他格式的数据。

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    // 其他请求处理方法
}

4、Spring Security

添加这个依赖后, 访问网站就需要登录验证

实现service.impl.UserDetailsServiceImpl类,继承自UserDetailsService接口,用来接入数据库信息 (service文件夹下的impl文件夹下的UserDetailsServiceImpl类, 一般习惯这么来写)
实现config.SecurityConfig类,用来实现用户密码的加密存储

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

暂时更新到这里… 过几天有时间再更

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汇凯金业:天然橡胶的用途和作用

天然橡胶是一种由橡胶树(Hevea brasiliensis)的乳汁加工而成的弹性体,具有弹性好、强度高、耐磨性好、耐寒性好、电绝缘性好、易于加工等优点,是世界上重要的战略物资和不可缺少的工业原料。 天然橡胶的用途十分广泛,主要应用于以下领域&…

java Web实现用户登录功能

文章目录 一、纯JSP方式实现用户登录功能(一)实现思路1、创建Web项目2、创建登录页面3、创建登录处理页面4、创建登录成功页面5、创建登录失败页面6、编辑项目首页 (三)测试结果 二、JSPServlet方式实现用户登录功能(一…

04_Shell字符串变量

04_Shell字符串 一、字符串拼接(推荐双引号) 无引号拼接解析变量时不能有空格 单引号拼接无法解析变量 双引号方式可正常解析变量 推荐 二、字符串的长度获取 #!/bin/bash#使用 ${#变量名} 可获取字符串变量长度 var"test" echo "${#va…

[PM]流程与结构设计

流程图 流程就是为了达到特定目标, 进行的一系列有逻辑性的操作步骤, 由两个及已上的步骤, 完成一个完整的行为过程, 即可称为流程, 流程图就是对这个过程的图形化展示 分类 业务流程图 概念: 描述业务流程的一种图, 通过特定符号和连线表示具体某个业务的处理步骤和过程作…

【R语言+Gephi】利用R语言和Gephi实现共发生网络的可视化

【R语言Gephi】利用R语言和Gephi实现共发生网络的可视化 注:本文仅作为自己的学习记录以备以后复习查阅 一 概述 Gephi是一款开源免费的多平台网络分析软件,在Windows、Linux和Mac os上均可以运行,像他们官网所说的,他们致力于…

AWS 云安全性:检测 SSH 暴力攻击

由于开源、低成本、可靠性和灵活性等优势,云基础设施主要由基于linux的机器主导,然而,它们也不能幸免于黑客的攻击,从而影响云的安全性。攻击Linux机器最流行的方法之一是通过SSH通道。 什么是 SSH 安全外壳协议(Sec…

二叉树超详细解析

二叉树 目录 二叉树一级目录二级目录三级目录 1.树的介绍1.1树的定义1.2树的基本术语1.3相关性质 2.二叉树介绍2.1定义2.2 性质 3.二叉树的种类3.1 满二叉树3.2完全二叉树3.3 二叉查找树特点:二叉查找树的节点包含的基本信息: 3.4 平衡二叉树 4.二叉树的…

极狐Gitlab安装部署

GitLab 是一个基于 Git 的开源 DevOps 平台,提供代码仓库管理、CI/CD(持续集成和持续交付)、项目管理、监控和安全等功能。它集成了多种工具,帮助开发团队在一个平台上进行代码开发、测试、部署和运维。以下是 GitLab 的主要功能和…

HippoRAG如何从大脑获取线索以改进LLM检索

知识存储和检索正在成为大型语言模型(LLM)应用的重要组成部分。虽然检索增强生成(RAG)在该领域取得了巨大进步,但一些局限性仍然没有克服。 俄亥俄州立大学和斯坦福大学的研究团队推出了HippoRAG,这是一种创新性的检索框架,其设计理念源于人类…

vue中,图片在div中按照图片原来大小等比例显示

图片在div中按照图片原来大小等比例显示&#xff0c;可以保证web上显示的图片和实际图片形状一样&#xff0c;保留原始图片效果 实现代码如下&#xff1a; <div style"padding: 0; width:400px;height:400px;position: absolute;border: 1px solid #eff2f6;">…

PostgreSQL 中如何实现数据的增量更新和全量更新的平衡?

文章目录 一、增量更新与全量更新的概念增量更新全量更新 二、考虑的因素1. 数据量2. 数据更改的频率和规模3. 数据一致性要求4. 系统性能和资源利用5. 业务逻辑和流程 三、解决方案&#xff08;一&#xff09;混合使用增量更新和全量更新&#xff08;二&#xff09;使用临时表…

制作电子名片的小程序系统源码 快速生成电子名片

在当今数字化时代&#xff0c;传统的纸质名片已逐渐被智能电子名片所取代。电子名片小程序作为一种基于微信生态的创新名片交换方式&#xff0c;凭借其便捷性、高效性和环保性&#xff0c;成为了众多商务人士的首选。小编分享一个制作电子名片的小程序系统源码&#xff0c;无忧…

[Linux]安装+使用虚拟机

首先下载&#xff08;提取码 &#xff1a; ssjf&#xff09;虚拟机&#xff08;应该是必须要下载17的了 &#xff0c; 我刚开始下载了15,16的在解决了不兼容的问题后频繁出现蓝屏的 &#xff09; 刚开始我遇见了 小问题 --》 在查看了以下两篇blog就解决了 虚拟机无法打开,…

几行代码,优雅的避免接口重复请求!同事都说好!

往期精彩文章&#xff1a;拿客户电脑&#xff0c;半小时完成轮播组件开发&#xff01;被公司奖励500&#xff01; 背景简介 我们日常开发中&#xff0c;经常会遇到点击一个按钮或者进行搜索时&#xff0c;请求接口的需求。 如果我们不做优化&#xff0c;连续点击按钮或者进行…

java使用poi-tl模版引擎导出word之列表循环数据渲染

目录 1.模版制作2.开启spring表达式3.编写关键代码接口4. 导出结果 poi-tl模版引擎中&#xff0c;如果区块对的值是一个非空集合&#xff0c;区块中的文档元素会被迭代渲染一次或者N次&#xff0c;这取决于集合的大小&#xff0c;类似于foreach语法。 1.模版制作 在静态资源目…

Mac VSCode 突然闪退、崩溃、打不开了

1、 思路历程 VSCode 作为前端常用开发工具&#xff0c;其重要性就不一一描述了。 所以 VSCode 突然打不开了&#xff0c;真的是让我一脸懵逼。 本来以为问题不大&#xff0c;于是 &#xff1a; 1、重启了一下VSCode 2、关机重启了一下电脑&#xff1b; 3、清理了一下缓存&am…

体积大的快递怎么寄便宜?如何寄件寄包裹更省钱?

大学毕业了&#xff0c;面对即将到来的工作生活&#xff0c;小李不得不把宿舍里的大包小包打包寄回家。可是&#xff0c;当他真正开始打包行李时&#xff0c;才发现这可不是一件简单的事&#xff1a;衣服、被子、书籍、杂物……这些东西加起来体积不小&#xff0c;想要省钱寄快…

网络安全设备——探针

网络安全设备探针是一种专门用于网络安全领域的工具&#xff0c;它通过对网络流量进行监控和分析&#xff0c;帮助发现和防止网络攻击。以下是对网络安全设备探针的详细解释&#xff1a; 定义与功能 定义&#xff1a;网络安全设备探针是一种设备或软件&#xff0c;它通过捕获…

3年经验的B端产品经理,应该是什么水平?

问你一个问题&#xff1a;你觉得3年经验的B端产品经理&#xff0c;应该是什么水平&#xff1f;很多朋友可能也没有仔细想过&#xff0c;自己3年后应该达到一个什么水平&#xff1f;能做什么体量的业务&#xff1f;要能拿多少薪资&#xff1f; 前几天和一个B端产品经理聊天&…

突破AI性能瓶颈 揭秘LLaMA-MoE模型的高效分配策略

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 本文介绍了一种名为“LLaMA-MoE”的方法&#xff0c;通过将现有的大型语言模型&#xff08;LLMs&#xff09;转化为混合专家网络&#xff08;MoE&#xff09;&#xff0c;从而解决了训练MoE…