首先有两个可以来配置的文件

  1. 一个是.properties文件

  2. 一个是.yml文件

关于. properties

如果用的是.properties文件时,在实体类_(或者说是 javaBean)_上加上注解@Configuration & @PropertySource("classpath:xxxxxx.properties") & @ConfigurationProperties(prefix = "xxx.yyy")

@propertySource: classpath 来加载配置文件的位置。

@ConfigurationProperties(prefix="xxx.yyy"):就是在 xxx.yyy 的后面是要配置的属性

关于. yml

如果用的是.yml文件时,如果是在appliction.yml上,如果要读取属性值,只需要加@Value("${属性名}")

如果要将属性赋值给JavaBean时, 先将 JavaBean 中的属性对应然后再加上注解@ConfigurationProperties(prefix="xxyy")

最好再添加上@Component组件

@ConfigurationProperties(prefix="xxyy") : xxyy 就是. yml 文件中要对这个 javabean 中的配置

应用类或者 Application 类

加上@EnableConfigurationProperties({xxxxxx.class})

注意:jar 包

用 maven 中的 pom 文件来加入 jar 包

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

否则, 会一直出问题

实例

.yml

新建一个 SpringBoot 项目并引进上述 jar 包
在 application.yml 中添加配置
my:
   name: forezp
   age: 12
   number:  ${random.int}
   uuid : ${random.uuid}
   max: ${random.int(10)}
   value: ${random.value}
   greeting: hi,i'm  ${my.name}
在应用类中直接读取
@RestController
@EnableConfigurationProperties({Test1.class, User.class}) //这里的Test1 和 User 在后面用
public class Test {
    
    @Value("${my.name}")  
    private String name;
    @Value("${my.age}")
    private int age;
 
    @RequestMapping(value = "/miya")
    public String miya1() {
        return name+":"+age;
    }

启动工程,访问路径,会返回

forezp12
创建一个实体类当作 javaBean Test1
@ConfigurationProperties(prefix = "my")
@Component
public class Test1 {
 
    private String name;
    private int age;
    private int number;
    private String uuid;
    private int max;
    private String value;
    private String greeting;
......toString......Get...Set......
......直接构造就是了..........
在应用类上加上调用其它的属性并且@EnableConfigurationProperties({Test1.class})
@RequestMapping(value = "/lucy")
    public String miya() {
        System.out.println(test1.toString());
        return test1.getGreeting() + " >>>>" + test1.getName() +
                " >>>>" + test1.getUuid() + " >>>>" + test1.getMax();
    }

启动工程,访问路径,会返回

hi,i'm forezp >>>>forezp >>>>9928740d-7588-4042-9624-5b75a743531b >>>>2

.properties

新建一个 SpringBoot 项目并引进上述 jar 包
在根目录下创建一个新的 .properties 文件
com.slide.name=forezp
com.slide.age=12
 
com.slide.slideInfos[0].Id=123456
com.slide.slideInfos[0].Name=lihua
 
com.slide.slideInfos[1].Id=123456
com.slide.slideInfos[1].Name=lihua
创建一个实体类当作 javaBean User
@Configuration
@PropertySource(value = "classpath:list.properties")
@ConfigurationProperties(prefix = "com.slide")
public class User {
    private String name;
    private int age;
    private List<SlideInfo> slideInfos;
//在SlideInfo 类里面有属性 name  id
    public List<SlideInfo> getSlideInfos() {
        return slideInfos;
    }
 
    public void setSlideInfos(List<SlideInfo> slideInfos) {
        this.slideInfos = slideInfos;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}
在实体类里面加入 User user 以及方法
@Autowired
    User user;
    @RequestMapping("/user")
    public String user() {
        return user.getName()+user.getAge()+user.getSlideInfos().toString();
    }

启动工程,访问路径,会返回

forezp12
[SlideInfo(docId=123456, docName=lihua),
SlideInfo(docId=123456, docName=lihua)]