SpringBoot学习篇|Springboot的配置加载

SpringBoot学习篇|Springboot的配置加载

image-20220618000721149

简单的认识

SpringBoot主要就是具备微服务的模块化思想,是在Spring的基础上改进得到的,Springboot就是会帮助我们自动配置的,内嵌Tomcat(或其它)的Spring服务,所以了解Springboot的自动装配原理对将其和Spring关联起来是很重要的。

image-20220617180532470

微服务阶段

javase: OOP

mysql:持久化

html+css+js+jquery+框架:视图,框架以及css的熟练很重要

javaweb:独立开发MVC三层架构的网站︰原始

ssm :框架:简化了我们的开发流程,配置也开始较为复杂

war: tomcat运行

spring再简化: SpringBoot - jar:内嵌tomcat

微服务架构!服务越来越多===》springcloud;

Springcloud

Springcloud简单说就是提供了各种扩展了组件,使得初始的Springboot服务从轻量级转变为高性能的大数据处理服务。

image-20220617180548851

搭建服务

我们需要在默认的@SpringBootApplication的同一目录下创建Controller控制器

package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Hello {
    @RequestMapping("/hello")
    String hello(){
        return "Hello World!!!";
    }
}

image-20220617235857789

访问http://127.0.0.1:8080/hello

image-20220617235909386

默认依赖

Tomcat已经被集成到了SpringBoot里面,可以直接将Tamcat打包到Jar包里面

所有的SpringBoot依赖都是以spring-boot-starter开头

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

web依赖:包含Tomcat,dispatcherServerlet,xml...等

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

单元测试

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

Jar包的打包插件,使用方法:Maven插件旁边使用package功能,Tomcat服务也会被打包到jar包中

修改端口

修改/resources/application.properties,添加配置

server.port=8888

修改spring标志

添加一个/resources/banner.txt

这里面放一个ascii艺术字例如


              {}                  
             .--.                 
            /.--.\                
            |====|                
            |`::`|                
        .-;`\..../`;_.-^-._       
 /\\   /  |...::..|`   :   `|     
 |:'\ |   /'''::''|   .:.   |     
@|\ /\;-,/\   ::  |..:::::..|     
`||\ <` >  >._::_.| ':::::' |     
 || `""`  /   ^^  |   ':'   |     
 ||       |       \    :    /     
 ||       |        \   :   /      
 ||       |___/\___|`-.:.-`       
 ||        \_ || _/    `          
 ||        <_ >< _>               
 ||        |  ||  |               
 ||        |  ||  |               
 ||       _\.:||:./_              
 \/ jgs  /____/\____\             

 Art by Joan Stark

然后运行Springboot项目就会发现原来的Spring变成了banner.txt的艺术字

配置加载

pom.xml

  • spring-boot-dependencies:核心依赖被放置在父工程中
  • 这就是为什么我们可以不指定版本直接使用一些依赖包的原因

启动器

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

启动器的作用是根据常见为我们自动化导入环境依赖,比如这里的spring-boot-starter-web会自动导入所有web依赖

想使用某些功能的话只要导入启动器即可,SpringBoot的启动器官网列表如下:Starters

主程序

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo3Application {

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

@SpringBootApplication是一个组合注解

springBootConfiguration : springboot的配置
configuration:spring配置类
@component:说明这也是一个spring的组件
@EnableAutoconfiguration : 自动配置
@AutoconfigurationPackage :自动配置包
@Import(AutoConfigurationPackages.Registrar.class) :自动配置`包注册@Import(AutoConfigurationImportselector.class):自动配置导入选择
//获取所有的配置
  1. 读取依赖中的/META-INF/spring.factories获取指定值
  2. 从这些自动配置的类导入容器,自动配置就会生效,帮助我们进行了自动配置
  3. 在Spring中需要手动的配置通过上面步骤自动完成了
  4. 整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.2.0.RELEASE.jar这个包下
  5. 它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器;
  6. 容器中也会存在非常多的xxxAutoConfiguration的文件)——,就是这些类给容器中导入了这个场景需要的所有组件,并自动配置@Configuration,JavaConfig

结论: springboot所有自动配置都是在启动的时候扫描并加载: spring.factories所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有了启动器,我们自动装配就会生效,然后就配置成功!

下面是几个截图(有点糊),具体的导入流程可以到这里从24分钟开始看,讲的很详细值得一看

image-20220617232746947

image-20220617232758063

image-20220617232805011

学习链接:

https://www.bilibili.com/video/BV1PE411i7CV

https://www.cnblogs.com/hellokuangshen/p/12468522.html

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇