Springboot:屬性常量賦值以及yml配置文件語法(四)


方式一: 注解賦值

構建javaBean:com\springboot\vo\Dog

1:@Component:注冊bean到spring容器中
2:添加get set toString方法
3:使用@Value(" ")注解進行屬性賦值
package com.springboot.vo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component//注冊bean
public class Dog {

    @Value("旺財")
    private String name;
    @Value("3")
    private Integer age;

	//添加get set toString方法
}

Springboot測試類測試:

@SpringBootTest
class HellospringbootApplicationTests {

    /*自動注入*/
    @Autowired
    private Dog dog;

    @Test
    void contextLoads() {
        /*打印信息*/
        System.out.println(dog.toString());
    }
}

打印結果:

Dog{name='旺財', age=3}

方式二: yml文件賦值

構建javaBean:com\springboot\vo\Person

1:@Component:注冊bean到spring容器中
2:添加get set toString方法
3:使用@ConfigurationProperties(prefix = ""):通過application.yml自動注入對應的值
//注冊bean
@Component 
//通過application.yml文件賦值 屬性和配置文件的key要一致
@ConfigurationProperties(prefix = "person") 
public class Person {

    private String id;
    private String name;
    private Integer age;
    private boolean isHappy;
    private Date birthday;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
    
	//添加get set toString方法
}

編寫appliation.yml文件

person:
  id: ${random.uuid}  #表達式獲取uuid
  name: 周星星
  age: 22
  isHappy: true
  birthday: 1986/09/03
  maps: {k1:v1,k2:v2}
  lists:
    - springboot
    - java
    - redis
  dog:
    name: ${person.name}_旺財 #表達式 獲取name
    age: 3

使用@ConfigurationProperties這個注解會報紅,添加依賴解決此問題:

報紅依賴

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

Springboot測試類測試:

@SpringBootTest
class HellospringbootApplicationTests {
    
    /*自動注入*/
    @Autowired
    private Person person;
    @Test
    void contextLoads() {
        System.out.println(person.toString());
    }
}

打印結果:

Person{id=cb9d58a6-67c3-4782-885b-03c3dd7d3ef8, name='周星星', age=22, isHappy=false, birthday=Wed Sep 03 00:00:00 CDT 1986, maps={k1v1=, k2v2=}, lists=[springboot, java, redis], dog=Dog{name='周星星_旺財', age=3}}

yml語法:

值的寫法:

1>字面量:普通的值(數字,字符串,布爾)
k: v:字面直接來寫;

字符串默認不用加上單引號或者雙引號;

"":雙引號;不會轉義字符串里面的特殊字符;特殊字符會作為本身想表示的意思

name: "zhangsan \n lisi":輸出;zhangsan 換行 lisi

'':單引號;會轉義特殊字符,特殊字符最終只是一個普通的字符串數據

name: ‘zhangsan \n lisi’:輸出;zhangsan \n lisi

 
2>對象、Map(屬性和值)(鍵值對):
k: v:在下一行來寫對象的屬性和值的關系;注意縮進

對象還是k: v的方式

friends:
        lastName: zhangsan
        age: 20
行內寫法:

friends: {lastName: zhangsan,age: 18}
 

3>數組(List、Set):
用- 值表示數組中的一個元素
pets:
 - cat
 - dog
 - pig
行內寫法

pets: [cat,dog,pig]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM