需要以Map<String, List<SmsConfigDTO>> configs接收数据
1. 定义 DTO 类
首先定义一个SmsConfigDTO
类来表示单个配置项的数据传输对象。
public class SmsConfigDTO {
private String key;
private String value;
// Getters and setters
}
2. 创建 Configuration Properties
接下来,创建一个配置类来绑定这些属性。使用@ConfigurationProperties
注解来绑定配置文件中的属性。
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "sms.config")
public class SmsConfigProperties {
private Map<String, List<SmsConfigDTO>> configs;
public Map<String, List<SmsConfigDTO>> getConfigs() {
return configs;
}
public void setConfigs(Map<String, List<SmsConfigDTO>> configs) {
this.configs = configs;
}
}
3. 配置文件
在你的application.yml
或者application.properties
文件中添加相应的配置。这里以application.yml
为例:
sms:
config:
configs:
group1:
- key: sender
value: example_sender1
- key: receiver
value: example_receiver1
group2:
- key: sender
value: example_sender2
- key: receiver
value: example_receiver2
4. 使用配置
你可以在任何需要这些配置的地方注入SmsConfigProperties
。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SmsService {
private final SmsConfigProperties smsConfigProperties;
@Autowired
public SmsService(SmsConfigProperties smsConfigProperties) {
this.smsConfigProperties = smsConfigProperties;
}
public void sendSms(String group) {
List<SmsConfigDTO> configs = smsConfigProperties.getConfigs().get(group);
// 使用配置发送短信
}
}
注意事项
- 在配置文件中,你需要确保键和值的格式正确,并且与你的
SmsConfigDTO
类匹配。 - 如果配置文件中的数据格式不匹配,Spring Boot会抛出异常。你可能需要添加一些验证逻辑来确保数据的有效性。
- 使用
@ConfigurationProperties
时,推荐加上@Validated
注解和对应的约束来确保数据的有效性。 - 需要注意在SmsConfigProperties中的属性名需要与配置文件中一致,而且配置名中最好不要有-,试过有读取数据失败的情况