Springboot



一.Springboot介绍

​ SpringBoot对Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。


二.Springboot特点

1.pom.xml

  • spring-boot-dependencies:核心在父工程中
  • 依赖中不需要版本,是因为有这些版本仓库

2.启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 启动器:Springboot的启动场景;
  • spring-boot-starter-web:自动导入web环境所有的依赖;
  • springboot将所有的功能场景,都转变为启动器
  • 使用什么功能,只需要找到对应的启动器就可以了

3.主程序

@SpringBootApplication//标注这是一个springboot应用
public class SpringbootApplication {
    //将springboot应用启动
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}

包含的注解:

  • @SpringBootConfiguration:springboot的配置

    ​ @Configuration:Spring配置类

    ​ @Component:spring组件

  • @EnableAutoConfigurantion:自动配置

    ​ @Import({AutoConfigurationImportSelector.class}):自动配置,包注册


4.小结:

  • springboot在启动时,从类路径/META-INF/spring.factories获取指定的值。
  • 将这些自动配置的类导入容器,自动配置的类就会生效
  • 以前需要自动配置的东西,springboot已经配好了
  • 把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器中。
  • 容器中也会存在非常多的XXXAutoConfiguration的文件,就是这个类导入了场景需要的所有组件,并自动配置。
  • 有了自动配置类,免去了我们手动编写配置文件的工作。

三.yaml介绍

1.简介

yaml是一种可读性高,以数据做为中心,用来表达数据序列化的格式。


2.格式
  • 普通的key-value格式
name: mingiao

  • 对象的定义
#对象
student:
  name: mingiao
  age: 21

#行内写法
student1: {name: mingiao1,age: 22}

  • 数组的定义
#数组
pets:
  - cat
  - dog
  - pig

#行内写法
pets1: [cat,dog,pig]

注意:yaml对空格和缩进的要求很高!


3.松散绑定

比如yaml中有一个字段写的是last-name,这个和lastName是一样的,后面默认的字母是大写的,这就是松散绑定。


4.复杂类型封装

yaml可以封装对象,使用@Value就不支持


四.属性注入

1.@value
@Value("hh")
private String name;
@Value("3")
private Integer age;

2.yaml注入

application.yaml

person:
  name: mingiao
  age: 3
  happy: true
  birth: 2020/3/4
  maps: {s1: m1,s2: m2}
  lists:
    - computer game
    - music
    - girl
  cat:
    name: kitty
    age: 2

person.java

@Component
@ConfigurationProperties(prefix = "person")
public class person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Cat cat;
    
    <!--getter and setter...-->
    }
  • @ConfigurationProperties(prefix = “xxx”):将配置文件中配置的每一个值,映射到组件中;
  • 参数prefix=“xxx”:将配置文件中的xxx下面的所有属性一一对应;
  • 如果yaml和properties文件同时存在,优先注入properties中的属性

3.propoties注入

application.propoties

name=mingiao
age=3

person.java

@PropertySource(value = "classpath:application.properties")
public class person {
    @Value("${name}")
    private String name;
    
    @Value("${age}")
    private Integer age;
    
   <!-- getter and setter...-->
}
  • @PropertySource(value = “classpath:xxx.properties”):将xxx.properties中的属性映射到组件中;

  • @Value("${xxx}"):指定映射的属性


4.@ConfigurationProperties注入和@Value注入的区别

在这里插入图片描述


五.多环境配置以及文件的位置

1.配置文件的位置及优先级
  • 项目路径下file:./config/
  • 项目路径下file:./
  • resource 路径下classpath:/config/
  • resource路径下classpath:/

-----从上到下,优先级由高到低-----


2.多环境配置

当有多个配置时(都是application-xxx.properties或yaml的形式),可以在application.properties或yaml中选择配置

  • properties
spring.profiles.active=dec//配置文件的后缀(xxx)
  • yaml
server:
  port: 8084
spring:
  profiles:
    active: dec

六.自动装配的原理

1.SpringBoot启动会加载大量的自动配置类

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

3.自动配置类中如果有我们需要的组件,就不需要手动配置了。

4.给容器中自动配置类添加组件时,会从properties中获取某些属性,我们给这些属性赋值即可。

  • xxxAutoConfigurartion:自动配置类,给容器中添加组件。
  • xxxProperties:封装配置文件中相关属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值