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

一.SpringBoot

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。调用业务,接受前端的参数


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


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


返回如下:



原理:自动装配!

2.6 原理

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



    org.springframework.boot
    spring-boot-starter-web



单元测试:



    org.springframework.boot
    spring-boot-starter-test
    test



打 jar 包依赖:



    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    


2.7 更改配置

到 application.properties 里,写端口号:


server.port=8081


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


三.原理初探

自动配置原理


在文件里的 pom.xml 里:


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



    org.springframework.boot
    spring-boot-starter-parent
    2.7.5
     



2.启动器


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



    org.springframework.boot
    spring-boot-starter-web



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 的配置



@EnableAutoConfiguration:自动配置



获取所有的配置:


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


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


protected List getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
    List 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()方法



原文链接;https://xie.infoq.cn/article/c8792337b6a172df60a43bf6a

展开阅读全文

页面更新:2024-06-01

标签:原理   启动器   推断   架构   属性   入口   接口   核心   程序   方法   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top