当前位置:首页 > Java技术 > 史上最详细Springboot概述

史上最详细Springboot概述

2022年08月06日 15:35:22Java技术2

SpringBoot

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

SpringBoot的概述

SpringBoot解决Spring的缺点

SpringBoot对Spring的缺点进行改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,可以更好地投入到逻辑业务的代码编写中,从而大大提高了开发的效率。

SpringBoot的特点

  • 为基于Spring的开发提供更快的入门体验
  • 开箱即用,没有代码生成,也不用配置XML。同时也可以修改默认值来满足特定需求
  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标、健康检查、外部配置
  • SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

SpringBoot核心功能

1. 起步依赖
起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起支持某项功能。简单地说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能
2. 自动配置
SpringBoot的自动配置是一个运行时(应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

SpringBoot入门

搭建环境

建一个正常的maven工程,然后配置POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <!-- 所有的springboot工程都必须继承spring-boot-starter-parent -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <groupId>1</groupId>
    <artifactId>springboot_quick</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- web功能的起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

再写一个启动类,我们叫MySpringBootApplication.java

package com;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//声明该类是一个springBoot引导类
@SpringBootApplication
public class MySpringBootApplication {
     
	//main是Java程序入口
    public static void main(String[] args) {
     
    	//run方法 表示运行SpringBoot的引导类  run参数就是SpringBoot引导类的字节码对象
        SpringApplication.run(MySpringBootApplication.class);
    }
}

注意:哪个类上面有@SpringBootApplication,哪个类就是引导类。
启动下,控制台打印如下:
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

Controller编写和实现

编写个controller类,如QuickController.java

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class QuickController {
     

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
     
        return "hello springboot";
    }
}

再次启动下tomcat,后在页面上输入网址localhost:8080/quick
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

springBoot工程的热部署

目的是为了修改代码后,可以让他自动加载不用来回重启服务。在pom加个配置。

<!--热部署配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

注意:IDEA进行SpringBoot热部署失败原因解决,修改IDEA进行自动编译的设置

  1. 选择区域勾选上
    史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
  2. 按Shift+Ctrl+Alt+/ ,选择Registry
    史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
    史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
    勾选后完成热部署,这样修改信息后无需重新启动Tomcat,刷新页面即可。

IDEA快速创建SpringBoot工程

选择Spring Initializr
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
起个域名、包名等
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
选择Web
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
生成后发现,之前导入的坐标和创建的启动类。IDEA都自动给我们生成好了。
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

SpringBoot原理分析

起步依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>

自动配置

  <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	 <version>2.0.1.RELEASE</version>

application.yml配置文件

yml配置文件简介

YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库的不同的编译语言程序导入,比如:C/C++ Ruby Python Java Perl C# PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
YML文件的扩展名可以使用 .yml 或者 .yaml

yml配置文件的语法

优先级:.properties > .yaml > .yml

配置普通数据

语法:key:value
示例代码:

#普通数据配置
name: hahaha

注意:value之前有一个空格

配置对象数据

#对象的配置
person:
	name: wangwu
	age: 18
	addr: dalian

行内对象配置

#行内对象配置
person: {
     name: zhangsan,age: 18,addr: dalian}

这个跟上面的等价,大部分情况配置用上面那种方法

配置数组、集合

# 配置数组、集合(普通字符串)
city:
	- beijing
	- tianjing
	- chongqing
	- shanghai
#或者
city: [beijing,tianjing,shanghai,chongqing]

# 配置数组、集合(对象数据)
student:
	- name: tom
	  age: 18
	  addr: beijing
	- name: lucy
      age: 17
      addr: shanghai
#或者
student: {
     {
     name: tom,age: 18,addr: beijing},{
     name: lucy,age: 17,addr: tianjing}}

#Map配置
map: 
	key1: value1
	key2: value2

配置文件与配置类的属性映射方式

使用注解@Value映射

我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上
优点:精确匹配
缺点:特别繁琐

@Value("%{name}")
private String name;

@Value("%{person.addr}")
private String addr;

通过@ConfigurationProperties映射数据

@ConfigurationProperties(prefix = "person")
public class AAA {
     
	private String name;
	private String addr;
	
	@RequestMapping("/qqq")
	@ResponseBody
	public String qqq(){
     
		//获得配置文件的信息
		return "name:"+name+",addr="+addr;
	}
	//创建get、set方法
	//。。。
}

springBoot的配置文件-configuration-processor作用

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
点击Open…
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
复制去POM.xml中去配置

    <!--@ConfigurationProperties的执行器的配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

然后就可以有自动提示
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

SpringBoot集成其他技术

集成Mybatis

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

集成Junit

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

集成SpringDataJPA

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

集成Redis

史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
启动Redis
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记
史上最详细Springboot概述 _ JavaClub全栈架构师技术笔记

作者:dexi.Chi 程序猿
来源链接:https://blog.csdn.net/weixin_43949154/article/details/105960745

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/18350.html

标签: Spring Boot
分享给朋友:

“史上最详细Springboot概述” 的相关文章

记一次SpringBoot项目使用RedisTemplate无法反序列化字节数组问题困扰8小时巨坑

记一次SpringBoot项目使用RedisTemplate无法反序列化字节数组问题困扰8小时巨坑

一、问题描述 问题描述: 前提:向Redis中SET值的是一个JFinal项目,使用的Jedis客户端API操作的,把一个对象转成byte[]形式存入Redis中。 然后在另一个SpringBoot项目中我通过Spring自带的RedisTempl...

SpringBoot之Hello World篇,使用eclipse+maven搭建SpringBoot工程

SpringBoot之Hello World篇,使用eclipse+maven搭建SpringBoot工程

首先来了解下什么是SpringBoot 百度百科:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬...

SpringBoot之整合Mybatis篇

SpringBoot之整合Mybatis篇

开头语 啪嚓,醒木一拍(咳咳) ,上回书我们说到:SpringBoot的简单搭建,也就是SpringBoot的搭建流程,简单的将项目进行启动,本次,我们简单的把SpringBoot与持久层框架Mybatis进行整合,接下来,我们开始。 Mybatis名词解释   &...

SpringBoot整合Dubbo与zookeeper纯注解版

SpringBoot整合Dubbo与zookeeper纯注解版

一、Dubbo和zk的作用 上回讲到,Dubbo作为一款优秀的RPC框架,封装了dubbo-provider(提供者)和dubbo-consumer(消费者),而provider和consumer之间需要通过注册中心来作为可发现的服务目录。而zookeeper(此处简称zk)提供了服务接口注...

SpringBoot整合SpringCloud分布式服务

SpringBoot整合SpringCloud分布式服务

一、SpringCloud是什么 度娘:Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署...

SpringBoot之两种配置文件application.properties与application.yml文件的区别及读取方式

SpringBoot之两种配置文件application.properties与application.yml文件的区别及读取方式

为什么会使用properties文件 在软件开发的过程中,会经常遇到一些配置说是需要切换的,例如数据库的配置地址,用户名和密码,可以选择在常量中进行配置,但是当下次需要修改时,则需要将Java代码进行重新编译,再重启服务器。这样导致很繁琐。properties文件的出现使得后期项目的维护中,...

SpringBoot整合hibernate纯注解版

SpringBoot整合hibernate纯注解版

一、hibernate是什么 hibernate是一款优秀的ORM(Object Relational Mapping ,对象关系映射)框架,是一种面向对象编程的框架,它对JDBC进行了封装,是一个全自动的ORM框架,可以自动生成SQL语句,也可以自定义HQL进行执行脚本。 优点:hib...

SpringBoot+Mybatis框架整合Shiro权限管理

SpringBoot+Mybatis框架整合Shiro权限管理

一、前言 ​ 之前曾分享过一个关于shiro的认证原理的文章,分享了一下shiro的认证流程与shiro中的名词解释,其实shiro作为一款轻量级框架,被应用在各种中小型及大型企业的登录认证和用户授权的模块,有小伙伴称,在用SpringBoot框架,之前用过xml方式进行配置shiro框架,...

SpringBoot整合Redis缓存

SpringBoot整合Redis缓存

一、前言 之前分享过关于Redis集群如何搭建的,最近有小伙伴儿说分享一下Redis如何使用SpringBoot的整合,项目中经常使用的就是Redis,本次整合的是Redis单机版,后续会分享Redis集群版本,请多提出自己的意见。 二、开始整合 1.首先需要搭建Redis服务器,可参...

SpringBoot 如何进行参数校验

SpringBoot 如何进行参数校验

为什么需要参数校验在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址、手机号码格式是否正确。 靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。 Validator框架就是为了解决开发人...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。