Spring如何利⽤@Value注解读取yml中的map配置
⽬录
@Value注解读取yml中的map配置
下边是我在yml中的map写法
使⽤时候注解的写法
举个例⼦
spring注解@Value通过yml⽂件注⼊map
yml⽂件
java代码注⼊
@Value注解读取yml中的map配置
⽹上查了好多资料,都是.properties⽂件中读取,⽽且⼜是⼏个⼈抄来抄去,了半天功夫不负有⼼⼈,终于到了详尽的⽤法介绍。
下边是我在yml中的map写法
test:
map: '{"test1":"12345","test2":"54321"}'
使⽤时候注解的写法
@Value("#{${test.map}}")
private Map<String,String> mapKey;
如果是.properties⽂件写法很不⼀样。
还有⼀种使⽤⽅法时创建⼀个类,使⽤@ConfigurationProperties注解,
举个例⼦
yml⽂件的写法:
test:
spring怎么读语音什么意思
map:
key1: 12345
key2: 54321
新建类的写法:
package com.sohu.umab.backendoperation.vo;
import lombok.Data;
import org.t.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Data
@Component
@ConfigurationProperties(prefix = "test")
public class AppKey {
//此处属性名必须和yml⽂件中的保持⼀致,否则读取不到
private Map map = new HashMap();
}
然后在使⽤的地⽅,直接注⼊你创建的类即可,这种⽅法缺点就是,之后每增加⼀个配置map,你就需要改这个类,耦合性⾼,不太灵活,推荐使⽤注解的⽅式。
参考的学习⽂章:
注解读取配置
创建类读取配置
这两篇让我受益匪浅呀,特别是第⼀篇⽂章!
注意:
@Value注解写在静态变量上边是不起作⽤的,
@Value("#{${appKey.map}}")
private static Map<String, String> appkeyMap;
debug模式下可以看到,appkeyMap为空,想要对静态变量进⾏赋值,需要⽤到set函数,可以参考下边这篇⽂章
spring注解@Value通过yml⽂件注⼊map
yml⽂件
app:
map: "{-1: "发送失败",0: "未发送",1: "发送成功"}"
java代码注⼊
@Value("#{${app.map}}")
private Map<String,String> map;
注意:要注⼊配置⽂件值的类,必须是spring的组件,可以⽤@Component或者是@Service、@Controller等注解的类都可以注⼊,普通java bean是不能注⼊值的
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。