IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot 使用及启动源码解析一 -> 正文阅读

[Java知识库]Spring Boot 使用及启动源码解析一

前言

本篇文章会介绍Spring Boot 的基本原理 以及以及一些使用,常见的配置方式等,如何从单一架构延申到现在的前后端分离(垂直应用架构)的项目,从网站流量很小到现在的网站流量动则几百万上下的 发展, 加速前端的架构。到后面 的分布式服务架构。都是提升效率。

概述

通过 Spring Boot,您可以轻松创建独立的、生产级基于 Spring 的应用程序,您可以“运行”这些应用程序。我们对Spring平台和第三方库持固执己见的观点,因此您可以以最小的麻烦开始。大多数弹簧启动应用需要最少的弹簧配置。

特点

  • 创建独立的弹簧应用程序,

  • 直接嵌入雄猫,码头或底托(无需部署WAR文件)

  • 提供固执己见的“启动器”依赖项,以简化构建配置

  • 尽可能自动配置春季和第三方库

  • 提供生产就绪功能,如指标、运行状况检查和外部化配置

  • 绝对无需代码生成,也无需 XML 配置

这都是spring boot 的 提供给我们的优秀点,也是好用的地方。

而微服务的集成等,都是 集成来自于springboot? 这是主流的一种方式。一定是逃不过的。

这里就涉及到一个概念,单体架构,soa架构 微服务架构

单体架构

all in one 将一个应用中所有服务都封装到一个应用中,无论什么系统,都将数据库,web等功能模块放到一个可执行文件中

SOA架构

面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

微服务架构

微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。

所以spring boot 也是基于上面框架的 基础 ,管理所有对象的同时,并且 在基础上 集成其他中间件,这也是spring boot? 构建出来的。

简单的使用

Getting Started (spring.io)

我们需要从创建一个 Maven?pom.xml文件开始。pom.xml是用于构建项目的配方。打开您喜欢的文本编辑器并添加以下内容:

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0-SNAPSHOT</version>
    </parent>

mvn dependency:tree命令打印项目依赖项的树表示形式。您可以看到spring-boot-starter-parent本身不提供任何依赖项。要添加必要的依赖项,请编辑pom.xml并在parent部分正下方添加spring-boot-starter-web?依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

最简单的使用方式

要完成我们的应用程序,我们需要创建一个 Java 文件。默认情况下,Maven 从?src/main/java?编译源代码,因此您需要创建该目录结构,然后添加一个名为?src/main/java/MyApplication.java以包含以下代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class MyApplication {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

@SpringBootApplication

在项目中最常见的设置方式

也可以使用?@SpringBootApplication? 注解,好处是里面可以配置? ?可以重写的操作

??

?

  • @SpringBootConfiguration ,本质是一个@Configuration配置类(类似一个SpringContext.xml文件),可以通过@Bean定义方法定义Bean。
  • @EnableAutoConfiguration 自动配置类??
  • @ComponentScan 组件扫描类
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
 //略
}

继承? SpringBootServletInitializer? ?方式,对启动 以及打包的设置

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(XXXApplication】.class);
}

springboot项目,若打包成war包,使用外置的tomcat启动

1、需要继承?org.springframework.boot.context.web.SpringBootServletInitializer类

2、然后重写configure(SpringApplicationBuilder application)方法

Spring boot 配置文件

properties的方式

Common Application Properties (spring.io)

包括核心的一些配置文件方式,

主要是 key=value 的方式

YAML 文件的方式

YAML作为属性配置文件,通常以 .yml 或者 .yaml 为后缀名。

YAML对语法的要求比较严格:

大小写敏感

使用缩进表示层级关系

缩进不允许使用tab键,必须使用空格缩进

缩进的空格数不重要,但是同级元素必须左侧对齐

‘#’ 表示注释

字符串无需加引号,如果加,单引号对与双引号对都可以

?

并且根据具体的值? 会有提示 出来? 对应的数据源等提示方式

?

有个? @configurationproperties 配置? 方式

?

?对于自定义的方式。 可以绑定 到具体的类上面? 利用这个注解

? 只要对应的名字相同即可

?SpringbootApplication 的启动源代码

??springapplication.run 方法,之前的? 初始化? 当前 这个类要做的事情。

到主函数中,包括 resourceloader? 设置等等

?在属性的时候设置的 ,包括所有的? 看存储的地方

?

进入 解析 判断 解析当前应用程序的类型。??

?

? 到了后面的,加载? ?资源等。

?

这里涉及到? 读取 所有的 加载 所有的? ? 自动配置的文件数据,? 加载类。

这里用来加载出来 对应 的? key 和value值,? 并且反射出来。

?

这个方法中 进行 创建 实例化,? ? 采用forname的方式, 找到? 对象, 进行实例化类。

? 排好序,然后? 将初始化的类,进行放到容器中。

?

找到主类。

?

准备完毕过后,进行 开始 启动? run方法

这里stopwatch 计算时间。?

设置所有的awt 图像 化,

?

?前置准备的过程

加载 springapplicationrunlistener

?加载监听的动能。 提供? 监听 的

?

?

?把所有的listener? 的factory? 文件加载 所有的listener? 类中数据。

包括部分的启动代码

?

在? 启动中加载所有的listener 数据?

?

监听器, eventpublish lish

?都可以做一些监听功能,某些操作事件的监听功能等等,都是有些地方重要的事情。

准备当前环境 信息,包括所有的 环境配置等等。

?

?包括所有的eventpubish 事件监听器? 进行监听等等。

前置的处理等等。

后面的部分更多的是使用spring 中,包括? applicationcontext? ?创建 ,以及? refreshcontext? 这也是 spring中很重要的部分,? ?这部分可以在spring框架中去查看。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:27:03  更:2022-10-08 20:27:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:21:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码