Springboot自动配置及配置文件

一、SpringBoot 项目的启动类
@SpringBootApplication  //标注这个类是一个Springboot的应用,启动类下的所有资源被导入
public class FirstSpringbootApplication {

    public static void main(String[] args) {
        //run方法将Springboot应用启动
        SpringApplication.run(FirstSpringbootApplication.class, args);
    }

}
注解:
@SpringBootApplication  里的两个注解
1. @SpringBootConfiguration : SpringBoot的配置
       @Configuration :  SpringBoot配置类
            @Component  : Spring组件
2. @EnableAutoConfiguration  :自动配置
        @AutoConfigurationPackage :自动配置包
            @Import({AutoConfigurationPackages.Registrar.class})  : 导入选择器“包注册”
        @Import({AutoConfigurationImportSelector.class}) : 自动配置导入选择
 二、Springboot 项目的配置文件

1. 两种配置方式:

1)application.properties

                语法结构:key = value                        

server.port = 8081

2)application.yml

                语法结构:key: 空格 value   

server:
    port:  8081

配置文件的作用:修改Springboot自动配置的默认值,因为Springboot在底层都给我们配置好了。

三、yaml 语法

1)语法结构:key: 空格 value 

2)yaml 存对象要 比properties 存对象更加简洁,properties只能保存键值对。

#yaml 存对象,对空格有要求
# 第一种写法:
student:
 name: xiaoxiao
 age: 14
#第二种  行内写法:
student:{name:xiaoxiao,age: 14}
# properties 存对象
student.name = xiaoxiao
student.age = 14

3)yaml 存数组

#第一种写法:
pets:
    - cat
    - dog
    - pig
#第二种 行内写法
pets: [cat,dog,pig]

4)yaml 可以直接给实体类赋值

#不用 yaml 给实体类赋值的方式
public class Dog {
    @Value("旺财")   //用注解的这种方式来给value 赋值
    private String name;
    @Value("3")
    private Integer age;
//用yml 给实体类赋值
//Person.java
@Component
@ConfigurationProperties(prefix = "person")   
//@ConfigurationProperties 的作用:                                           
// 将yml配置文件中配置的没一个属性,映射到这个组件中                                           
// 告诉Springboot将本类中的所有属性和配置文件中相关的配置进行绑定                                          
// 参数 prefix = "person" :将配置文件中person下面的所有属性一一对应  
// 只有这个组件是容器中的组件,才能使用容器提供的ConfigurationProperties功能
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 Dog dog;
}




//application.yml
person:
  name: xiaoxiao
  age: 3
  happy: yes
  birth: 2023/08/02
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 旺财
    age: 3
四、使用properties给实体类赋值
//Person.java
@PropertySource(value = "classpath:application.properties")  //@PropertySource 用来加载指定的配置文件
    public class Person {
        @Value("${person.name}")  //从配置文件中读
        private String name;
        @Value("#{11*2}")  //#SPEL Spring表达式
        private Integer age;
        @Value("true")  //字面量
        private Boolean happy;
        @Value("${person.birth}")
        private Date birth;
}



//application.properties
person.name=xiaoxiao
person.birth=2023/08/09
五、功能对比图

  • 松散绑定:比如yml中写的 last-name 和Java中写的 lastName 是一样的 ,- 后面跟着的字母默认是大写的。
  • JSR303数据校验:这个就是我们可以在字段中增加一层过滤验证,可以保证数据的合法性。
  • 复杂类型封装:yml中可以封装对象,使用@Value就不支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值