【Spring boot】 05-spring boot 配置

5. SpringBoot 配置

**spring boot配置 **

  • spring boot 的配置有非常多,全文背诵就不太现实。

properties文件中可以修改配置,但官方推荐使用yaml文件

application.properties:

server.port=8081
server.address=1.1.1.1

application.yaml:

server:
  port: 8081
  address: 1.1.1.1

注意: 在冒号之后,属性值之前,有一个空格,是不可缺少的 !

yaml 的文件扩展名可以是.yaml.yml

YAML

YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

yaml基本语法规则:

server:
  port: 8081
  address: 1.1.1.1

#对象
user:
  id: 1001
  name: 李四
  age: 20

#行内写法
student: {name: 张三,age: 19}

# 数组

pets: [dog, cat]

pets2:
  - dog
  - cat
  - pig
  - bird

yaml 给实体类赋值

实体类:

  • dog 类

    @Component
    public class Dog {
      	// @Value 可以给属性赋值
        @Value("旺财")
        private String name;
        @Value("公")
        private String sex;
        @Value("3")
        private Integer age;
      
      //geter and setter toString... 省略
    }
    
  • Person类

    • 使用 @ConfigurationProperties(prefix = “person”) 可以将yaml配置中的属性值赋给实体类
    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
        private String name;
        private Integer age;
        private Date birth;
        private Boolean sex;
        private Map<String,Object> map;
        private List<Object> hobbies;
        private Dog dog;
    }
    
    • 如果出现爆红提示↓↓↓,点击Open Documentation 进入官网,将官网中给出的依赖添加到pom.xml中

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ha4XV1bQ-1634138006549)(SpringBoot.assets/image-20210828195702297.png)]

      依赖:

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
      </dependency>
      
  • application.yaml

    person:
      name: 张三
      age: 19
      birth: 2000/11/21
      sex: true
      map: {k1: v1, k2: v2}
      hobbies:
        - code
        - music
        - sport
      dog:
        name: 旺财
        sex:age: 3
    
  • 测试类中进行测试

    @SpringBootTest
    class Spring03ConfigApplicationTests {
    
        @Autowired
        private Person person;
    
        @Test
        void contextLoads() {
            System.out.println("person = " + person);
        }
    
    }
    
    • 测试结果

      person = Person{name='张三', age=19, birth=Tue Nov 21 00:00:00 CST 2000, sex=true, map={k1=v1, k2=v2}, hobbies=[code, music, sport], dog=Dog{name='旺财', sex='公', age=3}}
      

yaml特殊语法


person:
	id: ${random.uuid}	#生成一串id字符串
  name: ${person.default:张三}	#表示如果person有default值就使用default的值,没有就使用张三
  age: ${random.int(1,100)}	#随机1到100的整数
  birth: 2000/11/21

等等…

properties也可以做到,但比较麻烦:

a.properties:

name=张三

在实体类中使用@PropertySource(value=“classpath:a.properties”) 可以指定properties做为配置文件,

使用@Value("${name}")可以取出properties中的数据,并赋值给对应属性;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值