假设现在有这样一个接口: GET /emojes
{
"emojies": [{
"id": "1",
"name": "呵呵",
"uri": "http://xxx.png"
},
{
"id": "2",
"name": "嘿嘿",
"uri": "http://ooo.png"
}]
}
里面的数据希望存储在配置中心,以便方便修改,动态刷新。spring cloud config支持yaml
格式的配置文件。结合spring boot配置类,可以把相关配置注入到一个Java Bean中,供其他对象使用。
添加yaml
文件
cat test-dev.yaml
im:
emojis:
- id: 1
name: 呵呵
uri: http://xxx1.png
- id: 2
name: 嘿嘿
uri: http://ooo.png
添加配置类
EmojisConfig.java
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "im")
@Data
public class EmojisConfig {
private List<Emojis> emojis = new ArrayList<>();
}
Emojis.java
import lombok.Data;
@Data
public class Emojis {
private String id;
private String name;
private String uri;
}
使用配置类
EmojisController.java
@RestController
@RequestMapping("/emojs")
@RefreshScope
public class EmojisController {
@Autowired
private EmojisConfig emojisConfig;
@GetMapping
public EmojisConfig doGet(){
return emojisConfig;
}
}
一定不要忘记添加
@RefreshScope
,修改配置后。POST /refresh
使其动态生效。
每次修改yml
文件后,先通过在线校验工具yaml-validator校验,以保证配置格式正确。