springBoot

一、springBoot

约定大于配置,简化开发。衍生出一站式解决方案。

主要优点:

  • 为spring开发者更快入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化web
  • 没有冗余代码生成和xml配置

在resources下新建banner.txt 文件 可以更改 spring启动图形。

二、自动配置

2.1 pom.xml

spring-boot-dependencies 核心依赖在父工程中
我们在写或者引入一些springboot依赖的时候不需要引用版本,因为有这些版本仓库。

2.2 启动器

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

springboot启动场景

springboot会将所有的功能场景都变成一个个的启动器。

在使用某个功能时,只需要找到对应的启动器。

2.3 主程序

注解:

@SpringBootApplication   标注这个类是一个springboot的应用
  @SpringBootConfiguration  springboot的配置
  @Configuration   spring配置类
  @Component 说明是spring的一个组件
  

@EnableAutoConfiguration  自动配置
@Import({AutoConfigurationImportSelector.class})  自动导入选择器
  @AutoConfigurationPackage  自动配置包
    @Import({Registrar.class}) 导入了选择器
  
  
List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes); 获取所有的配置


 

获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
    List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
    Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
    return configurations;
}

META-INF/spring.factories 自动配置的核心文件

在这里插入图片描述

Properties properties = PropertiesLoaderUtils.loadProperties(resource);

所有的资源都加载在配置类中

在这里插入图片描述

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

1、springboot在启动时从类路径下加载 META-INF/spring.factories 获取指定的值

2、将这些自动配置类导入容器,自动配置生效

3、以前我们需要自动配置的东西,现在springboot帮我们做了

4、整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.6.1.jar包下

5、它会把所有需要导入的组件,以类名的方式返回,这些组件就会添加到容器。

6、容器中会存在非常多的xxxAutoConfiguration的文件(@Bean),就是这些类给容器中导入了这个场景需要的所有组件,@Configuration、JavaConfig

7、有了自动配置类,免去了我们手动编写配置文件的工作。

2.3.1 Run方法

1、判断应用类型是普通项目还是web项目

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

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

4、推断并设置main方法的定义类,找出运行的主类。

2.3.2 自动装配原理

1、springboot启动会加载大量的自动配置类

2、看我们需要的功能有没有在springboot默认写好的自动配置类中

3、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在其中,我们就不需要在手动配置了)

4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们只需要在配置文件中指定这些属性的值即可。

xxxAutoConfigurartion: 自动配置类;给容器中添加组件;

xxxProperties:封装配置文件中相关属性;

三、springboot配置

配置对象的值

@Component
@Data
@AllArgsConstructor 
@NoArgsConstructor
@ConfigurationProperties(prefix = "articleinfo")  //注意支持使用驼峰规则
public class ArticleInfo {
    private String articleId;
    private String imageUrl;
}
articleInfo:
  articleId: CO1233
  imageUrl: test
可导入 也可以不导入
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

四、JSR303校验

使用注解:

@Validated

在这里插入图片描述

校验源码所在地

在这里插入图片描述

五、多环境及配置文件位置

server:
  port: 8080
spring:
  profiles:
    active: dev  #激活dev环境
---
server:
  port: 8081
spring:
  profiles: dev
---
server:
  port: 8082
spring:
  profiles: test
  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值