SpringBoot 原理初探以及第一个 SpringBoot 程序【SpringBoot】

本文介绍了SpringBoot的基本概念,包括它如何简化Java开发,核心特性自动装配。详细演示了如何从SpringBoot官网新建项目,配置环境(JDK1.8,Maven3.6.1),并使用IDEA打开。接着讲解了启动器的作用和项目结构,创建了第一个RESTful接口,并解释了自动配置的工作原理。最后探讨了SpringBoot的自动配置机制和启动流程。

一.SpringBoot

1.1 Spring 和 SpringBoot

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

Spring Boot

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

SpringBoot 最核心的东西:自动装配。

1.2 本阶段学习任务

1.3 微服务架构

微服务就是一些协同工作小而自治的服务。

与传统的单一软件架构不同,微服务架构是为满足当前互联网后台服务的“高并发、高性能、高可用性三高要求”而创建的软件架构。

二.搭建一个 SpringBoot 程序

环境:

jdk 1.8

maven 3.6.1

SpringBoot :最新版

idea

SpringBoot 官方网站:

https://spring.io/projects/spring-boot#overview

2.1 新建 SpringBoot 项目(官方)

1.在官方网站里点击进入 Spring Initializr.

2.project 选择 Maven,语言选择 java

版本选择最新的 2.7.5,Java 选择 8,在右边将 Springweb 添加进去,点击下载,就会得到一个标准的 Maven 项目。

3.使用 idea 打开这个项目即可:

2.2 正常创建 SpringBoot 项目

1.直接在 idea 里创建一个 Spring 项目即可,如下配置

2.添加依赖 Spring Web

总结:俩种创建方式 1.在 SpringBoot 官网下载后,导入 idea 开发。2.可以直接在 idea 里创建项目进行开发。

2.3 项目结构

SpringbootDemoApplication 为项目的主入口。

application.properties 是项目的核心配置文件。

2.4 启动项目

运行主入口:就会启动项目

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

访问本地 8080 端口:

说明项目搭建成功。

2.5 写一个接口 HelloControlier

这个接口,接口就是 hello。调用业务,接受前端的参数

@RestControllerpublic class HelloControlier {    @RequestMapping("/hello")    public String hello(){        return "hello,world上进小菜猪";    }}

所以我们访问 http://localhost:8080/hello,就会进入这个接口。

返回如下:

原理:自动装配!

2.6 原理

依赖:这里配置 web 依赖,比如 tomact,dispatcherServlet,xml 等等:

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

单元测试:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-test</artifactId>    <scope>test</scope></dependency>

打 jar 包依赖:

<build>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>    </plugins></build>

2.7 更改配置

到 application.properties 里,写端口号:

server.port=8081

重新启动项目:发现现在的端口号变成了 8081!

三.原理初探

自动配置原理

在文件里的 pom.xml 里:

1.核心依赖都在父工程里。

<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.7.5</version>    <relativePath/> <!-- lookup parent from repository --></parent>

2.启动器

就是一个 Springboot 的启动场景,像下面的 spring-boot-starter-web,会帮我们自动的导入 web 环境的所有依赖。

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

3.项目入口文件 SpringbootDemoApplication

SpringApplication 类

run 方法

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

SpringApplication

这个类做了下面 4 个事情:

1.推断应用的类型是普通的项目还是 Web 项目

2.查找并加载所有可用初始化器,设置到 initializers 属性中中

3.找出所有的应用程序监听器,设置到 listeners 属性中

4.推断并设置 main 方法的定义类,找到运行的主类

@SpringBootApplication 标注这个类是一个 springboot 的应用

点进去查看源码:

@SpringBootConfiguration:springboot 的配置

  • @Configuration :spring 配置类

  • @Component:也是一个组件类

@EnableAutoConfiguration:自动配置

  • @AutoConfigurationPackage:自动配置包

  • @Import({AutoConfigurationPackages.Registrar.class}):自动配置“包注册”

  • @Import({AutoConfigurationImportSelector.class})自动配置导入选择

获取所有的配置:

List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);

获取候选的配置:核心代码

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {    List<String> configurations = new ArrayList(SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader()));    ImportCandidates.load(AutoConfiguration.class, this.getBeanClassLoader()).forEach(configurations::add);    Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories nor in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.");    return configurations;}

对于 SpringBoot 的理解,俩点:

1.自动装配

2.run()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值