springboot属性配置

Catalogue
  1. 1. 背景
  2. 2. @value的配置
  3. 3. @ConfigurationProperties配置
  4. 4. @PropertySource注解
  5. 5. 添加参数验证

背景

@ConfigurationProperties@Value 都是 Spring 提供的用于从配置文件注入配置信息的方式,不同的是@Value比较适合配置少的场景,当配置多的时候,每次写@Value会显得很麻烦,所以用@ConfigurationProperties来处理配置多的情形

@value的配置

application.properties配置文件中

1
2
user.name=pjmike
user.age=21

实体类中

1
2
3
4
5
6
7
8
@Data
public class User {
private Long id;
@Value("${user.name}")
private String name;
@Value("${user.age")
private int age;
}

直接在参数上添加@Value注解即可

@ConfigurationProperties配置

1
2
3
4
5
6
7
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private Long id;
private String name;
private int age;
}
1
2
3
4
5
6
7
8
9
10


@SpringBootApplication
@EnableConfigurationProperties(User.class)
public class Chapter2Application {

public static void main(String[] args) {
SpringApplication.run(Chapter2Application.class, args);
}
}
1
2
user.name=pjmike
user.age=21

以上代码就可实现@ConfigurationProperties对属性的绑定操作

注意:

  • @EnableConfigurationProperties注解中列出要注册的属性类

@PropertySource注解

@PropertySource注解可以从properties文件中,获取对应的key-value值,将其赋予变量.

它可以和@value和@ConfigurationProperties配合使用。通过该注解可以指定某一个properties配置文件,而不是默认的application.properties文件

1
2
3
4
5
6
7
8
9
@Data
@PropertySource("classpath:user.properties")
public class User {
private Long id;
@Value("${user.name}")
private String name;
@Value("${user.age")
private int age;
}

添加参数验证

@ConfigurationProperties 是可以和 validation 注解一起使用的

1
2
3
4
5
6
7
8
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private Long id;
@NotBlank
private String name;
private int age;
}
Bagikan Komentar