Spring Boot入门笔记(上)

简介: Spring Boot入门笔记

一.Spring Boot简介


Spring Boot 的开发团队叫做Pivotal,Spring Boot 可以简化开发过程,抛弃配置八股文,他的目标就是为了提高开发效率。


spring boot核心特点:

第一个特点就是自动配置以及默认配置,这说的是什么意思呢?以我们一个web项目为例,其实它对外是要暴露端口的,那向这种配置,每一个web项目都要有,那我们SpringBoot就认为,既然每个web项目都要有,我就给你一个默认的配置,这样的话呢,你如果重新配置了的话,就以你的为标准,如果你不去配置的话,就以默认的为效。同样,向Redis和MySQL这些组件会有一系列的众多的一些默认的配置,其实这些默认的配置对与大多数的项目而言他们不一定会去改动。


第二个特点就是起步依赖:starter一站式 。这个起步依赖,在springboot 里面叫做starter,starter一站式服务就可以把你整个所需要用的依赖都引入进来。就比如说,假设我们想引入一个安全框架,那么,你只要引入一个starter,它就会把它所需要的相关的依赖都引进来,相当于对你来说,你不需要关注它需要哪些东西,你只需要关注你想引入它,那么引入一个依赖就够了。所以,这也大大减轻了程序员的开发负担.


第三个特点就是他会创建一个独立的Spring应用程序 。这个说的是什么意思呢,这个是说,我们之前我们需要用Tomcat作为一个容器,把我们的项目打成一个war包,然后把他放到tomcat里面去运行。现在呢,springboot内部就已经嵌入了tomcat,他就不需要额外的去做什么环境配置什么的,你只需要把它当成一个java程序运行,他就能启动起来。所以,在开发的时候,尤其是在部署运行的时候,也给我们带来了很多的便利。


第四个特点就是监控能力强,这个监控能力,如果你需要的话,就可以进行配置,配置好之后,对于内部的很多情况,你都能有所掌控。


最后一个特点就是较少需要XML配置,这种配置其实相对于我们的springboot配置文件而言啊,其实写起来还是比较繁琐的,有很多内容都是样板式的,不需要写。用springboot就可以比较少的去使用xml的配置。当然,少并不代表完全没有,在有些时候我们也是需要它的。


SpringBoot前世今生:

其实springboot诞生的基础和根基就是springframework ,springframework的核心就是IOC和APO。关于这块的内容,前面我的文章都有详细讲过。但是后来我么用这个核心内容去开发一些web项目,组件发现它存在一些繁琐的情况。所以,我们SpringBoot的核心目标就是精简高效,他是建立在我们spring的基础上去开发的,而不是另起炉灶,从零开始的。在后面,我还要学习和微服务相关的东西Spring Cloud,而且Spring Cloud 有一个特点就是集百家之长,他会把很多有用的一些项目和框架集合到一起来形成Spring Cloud。所以对于SpringBoot而言,他的基础是spring的核心,而它进一步的发展就是SpringCloud。


SpringBoot版本介绍:

我们打开SpringBoot的官网来看看,那里会把springboot当前的版本给说明出来,不仅如此,里面还有一些关于springboot的教学和演示。这里只要介绍一下他的版本,这里会有一些符号,比如CURRENT 、GA 、SNAPSHOT 。这些又是什么意思呢?我们究竟如何根据这些标记去选择适合我们的版本呢?当然,springboot的更新版本很快,当你再去打开这个官网的时候,可能他的版本又有了新的迭代,这是很正常的。不过,你们可能会有追新的思想,那是不是最新的就是最好的呢?这里要明确,不是最新最好,因为虽然springboot的版本提高了,但是他需要很多组件去配套的,而这些配套的组件是需要一个适配的过程的,并且组件的新功能我们并不一定会用到。

如果哪个版本是CURRENT版本,它代表是最新的GA版本,那什么是GA呢?GA的意思就是发布版本,他是面向大众的可用的稳定版本。这种版本的特点就是功能完整稳定,一旦发布之后,这个版本就永远不会更改。SNAPSHOT的英文意思是快照的意思,正是因为他叫SNAPSHOT,所以他的内容是会随时被修改的。


二.第一个Spring Boot 项目演示


(1) 新建SpringBoot项目


有两种springboot项目的方法:

第一种是通过spring官网的方式来创建springboot项目。


056af14c2a1645238a211b41831f20e4.png


下面来学习第二种创建项目的方式:

Idea集成的Spring Initializr。打开Idea之后,新建项目,然后在左侧选择Spring Initializr,其他的就不用多解释了。next后选择版本和依赖,最后finish就行了。


a705db69d0db4b599c9c4791154ffd5b.png

3dd5039d742a4a658222c1955004be46.png


生成好项目后,展开项目的结构。


c7937ed65a494715a9cfdc9b687ae86f.png


(2) 完成第一个接口的开发


说到接口,我们快速复习一下web项目的三层结构。通常是分为Controller层,Service层和Dao层。Controller层主要的职责就是对外去提供接口而Service层主要的职责是业务逻辑相关的。而dao层通常是和数据库相关的。我们的项目也不例外,会分为这样的三层。


我们首先在com.haiexijun.springbootlearn下面创建一个包controller。然后去创建一个类。这个类的名称我叫它ParaController。然后要在类上加一个注解@RestController,@RestController的作用就是我们的返回是一个json格式的,而不是一个页面。然后编写如下代码:


package com.haiexijun.springbootlearn.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParaController {
    @GetMapping("/first")
    public String firstRequest(){
        return "hello springboot,我的第一个接口";
    }
}


我们点击运行项目。浏览器访问localhost:8080/first ,结果如下:


57c421faa9254f289043df208b494760.png


(3) 多种配置URL的方式


上面我们写的那个接口其实是写死的,他没有办法对参数进行一个接收和处理,这个和实际的情景也是不一样的。所以我要学习一下在springboot中,如果要对参数进行接收和处理的话要怎么做。


我们在上面的controller类中添加一个requestPara方法,把请求的参数给获取到,方法内用一个@RequestParam注解来表明传入的参数,并且可以对参数操作。


    @GetMapping("para")
    public String requestPara(@RequestParam Integer num){
        return "我收到了参数:"+ num;
    }


浏览器运行如下:


c0fbfae554154291ad6e263290d802e8.png


上面演示了GET请求接收请求传过来的参数,下面编写一个方法来演示接收POST请求传过来的参数。post请求接收参数,参数用@RequestBody注解标注,我们这里创建一个类类接受传过来的参数。我们新创建一个包entity,里面放实体类。我们在里面创建一个Student学生类,里面有id和name两个属性。


package com.haiexijun.springbootlearn.entity;
public class Student {
    private Integer id;
    private String name;
    public Student(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}


    @PostMapping("/post")
    public String postRequest(@RequestBody Student student){
        return "我收到了post参数:"+ student;
    }


我们打开postman,来测试一下接口:


66fc51dd17004e928a116e6fa3927c17.png

相关文章
|
3月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
8天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
20 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
26 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
24 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
1月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
26 1
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
61 2
|
1月前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
53 0
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA