web开发——Spring Boot(纯八股)

一、Spring Boot是什么

本质上来说,Spring Boot就是Spring,它本事不提供Spring的核心功能,而是作为Spring的脚手架框架,达到快速构建项目、预置三方配置、开箱即用的目的。
Spring Boot的优点:

  • 可以快速构建项目
  • 可以对主流开发框架的无配置集成
  • 项目可以独立运行,无需外部依赖servlet容器
  • 提供运行时的应用监控
  • 极大提高开发、部署效率
  • 可以与云计算天然集成

二、Spring Boot Starter

2.1 什么是starter

SpringBoot开发项目可以简化Spring应用的搭建以及开发过程,因为它约定大约配置的策略以及自动装配的特点。

约定大约配置:SpringBoot指定的特定的方式进行配置(application.properties/yaml),开发人员不需要像在Spring框架开发时定义配置文件。
自动装配:在使用某个组件或框架时需要引用其依赖、配置类、配置文件等工作时,SpringBoot帮我们做了这些工作。
Starter就是自动装配的具体实现,其就是一个maven项目,对某个组建的依赖、配置进行管理。通过导入“starter”模块更容易使用这个组件

2.2 starter的作用

Spring Boot通过提供众多起步依赖(Starter)降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model, POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

2.3 自动装配的过程

自动装配核心过程

  1. SpringBoot通过@EnableAutoConfiguration注解开启自动配置,加载spring.factories中注册的各种AutoConfiguration类
  2. 当某个AutoConfiguration类满足其注解@Conditional指定的生效条件(Starters提供的依赖、配置或Spring容器中是否存在某个Bean等)时,实例化该AutoConfiguration类中定义的Bean(组件等),并注入Spring容器,就可以完成依赖框架的自动配置。

三、SpringBoot的启动流程

SpringBoot项目创建完成会默认生成一个名为*Application的入口类,通过该类的main方法启动SpringBoot项目。
在main方法中,通过SpringApplication的静态方法(run方法)进行SpringApplication的实例化操作,再针对实例化对象调用另外一个run方法来
SpringBoot的启动流程
SpringApplication再run方法中重点做了以下操作

  1. 获取监听器和参数配置
  2. 打印banner
  3. 创建并初始化容器
  4. 监听器发送通知
    此外还涉及启动时长统计、异常报告、启动日志、异常处理等操作。

四、Spring Boot的注解(问到自然死)

@SpringBootApplication注解:

在Spring Boot入口类中,唯一的一个注解就是@SpringBootApplication。它是Spring Boot项目的核心注解,用于开启自动配置,准确说是通过该注解内组合的@EnableAutoConfiguration开启了自动配置。

@EnableAutoConfiguration注解:

@EnableAutoConfiguration的主要功能是启动Spring应用程序上下文时进行自动配置,它会尝试猜测并配置项目可能需要的Bean。自动配置通常是基于项目classpath中引入的类和已定义的Bean来实现的。在此过程中,被自动配置的组件来自项目自身和项目依赖的jar包中。

@Import注解:

@EnableAutoConfiguration的关键功能是通过@Import注解导入的ImportSelector来完成的。从源代码得知@Import(AutoConfigurationImportSelector.class)是@EnableAutoConfiguration注解的组成部分,也是自动配置功能的核心实现者。

@Conditional注解:

@Conditional注解是由Spring 4.0版本引入的新特性,可根据是否满足指定的条件来决定是否进行Bean的实例化及装配,比如,设定当类路径下包含某个jar包的时候才会对注解的类进行实例化操作。总之,就是根据一些特定条件来控制Bean实例化的行为。

@Conditional衍生注解:

在Spring Boot的autoconfigure项目中提供了各类基于@Conditional注解的衍生注解,它们适用不同的场景并提供了不同的功能。通过阅读这些注解的源码,你会发现它们其实都组合了@Conditional注解,不同之处是它们在注解中指定的条件(Condition)不同。

@ConditionalOnBean:在容器中有指定Bean的条件下。

@ConditionalOnClass:在classpath类路径下有指定类的条件下。

@ConditionalOnCloudPlatform:当指定的云平台处于active状态时。

@ConditionalOnExpression:基于SpEL表达式的条件判断。

@ConditionalOnJava:基于JVM版本作为判断条件。

@ConditionalOnJndi:在JNDI存在的条件下查找指定的位置。

@ConditionalOnMissingBean:当容器里没有指定Bean的条件时。

@ConditionalOnMissingClass:当类路径下没有指定类的条件时。

@ConditionalOnNotWebApplication:在项目不是一个Web项目的条件下。

@ConditionalOnProperty:在指定的属性有指定值的条件下。

@ConditionalOnResource:类路径是否有指定的值。

@ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个或者有多个但是指定了首选的Bean时。

@ConditionalOnWebApplication:在项目是一个Web项目的条件下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web Spring Boot 是一种用于快速开发 Web 应用程序的框架。它是基于 Spring 框架的轻量级解决方案,提供了强大的开发工具和功能,可帮助开发人员更高效地构建和部署网页应用。 Web Spring Boot 的实践过程通常包括以下几个步骤: 1. 配置项目环境:首先,我们需要配置项目的开发环境。我们可以使用 Maven 或 Gradle 来管理项目依赖,并选择适合的开发工具,如 Eclipse 或 IntelliJ IDEA。 2. 创建 Spring Boot 项目:创建一个基于 Spring BootWeb 项目。我们可以通过 Spring Initializr 网站或使用命令行工具来创建项目。 3. 定义数据模型:根据应用需求,我们可以使用 Java 类来定义数据模型。这些类通常称为实体类,我们可以使用注解来指定数据表、字段以及关系等。 4. 编写控制器:控制器是处理用户请求的核心部分。我们可以使用注解来标识请求 URL、请求类型以及方法,然后在方法中编写业务逻辑。控制器的返回值通常是一个视图,我们可以通过模板引擎将动态数据渲染到视图中。 5. 配置视图模板:视图模板是用于渲染动态内容的文件。Spring Boot 支持多种模板引擎,如 Thymeleaf、Freemarker 和 Velocity。我们可以选择适合自己的模板引擎,并进行相应的配置。 6. 完成业务逻辑:根据应用需求,我们可以编写其他的业务逻辑代码,如数据验证、数据处理、权限控制等。 7. 部署和测试:完成开发后,我们可以将项目部署到服务器上,并进行测试。可以使用内嵌的 Tomcat 容器来启动项目,并使用 Postman 或浏览器来发送请求,验证项目的功能和性能。 Web Spring Boot 的优势在于提供了快速开发的能力,减少了繁琐的配置工作,让开发人员更专注于业务逻辑的实现。它还提供了一系列的自动化工具和库,如自动配置、自动刷新等,大大提高了开发效率。此外,Spring Boot 还提供了丰富的扩展和集成能力,可以与其他框架和服务进行无缝集成,满足不同项目的需求。 总而言之,Web Spring Boot 是一种强大且高效的开发框架,适用于开发各种规模的 Web 应用程序。通过合理的配置和编写代码,开发人员可以快速构建出功能完善、高性能的网页应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值