SpringBoot狂神说视频自整理笔记前半篇

本文介绍SpringBoot的基础概念及其如何简化Java开发,包括SpringBoot的主要优点、自动配置原理、启动过程等,并提供了首个SpringBoot程序的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本片文章均为观看狂神说java中springboot视频整理的笔记,仅作为学习用途!

1、SpringBoot:快速入门

1.1、什么是Spring

Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:Rod Johnson
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发

1.2、Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下4种关键策略:

  1. 基于POJO的轻量级和最小侵入性编程
  2. 通过IOC,依赖注入(DI)和面向接口实现松耦合
  3. 基于切面(AOP)和惯例进行声明式编程
  4. 通过切面和模板减少样式代码

1.3、什么是SpringBoot

SpringBoot就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置,you can “just run”,能迅速的开发web应用,几行代码开发一个http接口

所有的技术框架的发展似乎都遵循了一条主线规律:从一个复杂的应用场景 衍生 一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过与麻烦,于是开始提倡"约定大于配置",进而衍生出一些一站式的解决方案

是的 这就是Java企业级应用 → J2EE → spring → springboot的过程

随着spring不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称配置低于。springboot正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用Spring,更容易的集成各种常用的中间件、开源软件

Spring Boot基于Spring开发,Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷的开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。SpringBoot以约定大于配置的核心思想 默认帮我们进行了很多设置,多数SpringBoot应用只需要很少的Spring配置。同时它集成了大量常用的第三方库配置(例如:Redis、MongoDB、RabbitMQ、Quartz等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。

简单来说就是Spring Boot其实不是什么新的框架,它是默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架

Spring boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot已经当之无愧成为Java领域最热门的技术

1.4、SpringBoot的主要优点

  • 为所有Spring开发者更快的入门
  • 开箱即用 ,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

2、什么是微服务架构

微服务原文链接:https://martinfowler.com/articles/microservices.html
翻译版:https://www.cnblogs.com/liuning8023/p/4493156.html

3、第一个SpringBoot程序

在这里插入图片描述
idea集成了https://start.spring.io/

3.1、SpringBoot自动配置原理分析

详情请看:https://blog.csdn.net/weixin_45416687/article/details/114648417

3.2 SpringBoot启动原理

SpringApplication.run(HellowordApplication.class, args);
分析该方法主要分两部分,一部分是SpringApplication的实例化,二是run方法的执行

SpringApplication这个类主要做了以下四件事情

  1. 推断应用的类型是普通项目还是WEB项目
  2. 查找并加载所有可用初始化器,设置到initializers属性中
  3. 找出所有的应用程序监听器,设置到listeners属性中
  4. 推断并设置main方法的定义类,找到运行的主类

在这里插入图片描述

3.3 SpringBoot配置文件

SpringBoot使用一个全局的配置文件,配置文件名称是固定的

  • application.properties
    语法结构:key=value
  • application.yml 或 application.yaml
    语法结构:key: 空格value
    配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了

以前的配置文件,大多数都是使用xml来配置;比如一个简单的端口配置,我们来对比下yaml和xml

yaml配置:

server:
  port: 8070

XML配置

<server>
	<port>8070</port>
</server>

@ConfigurationProperties(prefix = “person”) 自动加载yaml文件
在这里插入图片描述
@PropertySource(value = “classpath:application.properties”)
在这里插入图片描述
在这里插入图片描述

  • configurationProperties只需要写一次即可,value则需要每个字段都添加
  • 松散绑定,比如yaml中写的last-name,这个和llastName是一样的,-后面跟着的字母默认是大写的,这就是松散绑定
  • JSR303数据校验,这个就是我们可以在字段增加一层过滤器验证,可以保证数据的合法性
  • 复杂类型封装,yaml中可以封装对象,使用@value就不支持

多环境配置及配置文件位置

server:
  port: 8081
spring:
  profiles: 
    active: test
---
server:
  port: 8082
spring:
  profiles: test

位置:
Spring Boot will automatically find and load application.properties and application.yaml files from the following locations when your application starts:
Spring Boot将自动查找并加载应用程序。属性和应用程序。当你的应用程序启动时,yaml文件从以下位置:

  • The classpath root 根路径
  • The classpath /config package config包
  • The current directory 当前目录
  • The /config subdirectory in the current directory 当前目录下的/config子目录
  • Immediate child directories of the /config subdirectory /config子目录的直接子目录

4. SpringBoot Web开发

静态资源路径:

protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            super.addResourceHandlers(registry);
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                ServletContext servletContext = this.getServletContext();
                this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
                this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
                    registration.addResourceLocations(this.resourceProperties.getStaticLocations());
                    if (servletContext != null) {
                        registration.addResourceLocations(new Resource[]{new ServletContextResource(servletContext, "/")});
                    }

                });
            }
        }


private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
  1. 在springboot,我们可以使用以下方式处理静态资源
    • webjars localhost:8080/webjars
    • public,static,/**,resource localhost:8080/
  2. 优先级:resource > static > public

特别鸣谢

  1. 狂神B站地址:https://space.bilibili.com/95256449/
  2. 狂神个人网站:https://www.kuangstudy.com
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值