在Springboot中有的配置是Springboot已经集成了,只需要在application.properties中写规定好的字符串名称,Springboot就可以自动读取;但更多的时候需要自己在配置文件中加入一些属性,需要自己进行读取,下面就说一下如何读取自定义的写在application.properties中的值
本文一共介绍四种写法
一、第一种写法 @Value("${es.port:9200}") (不推荐,是硬绑定)
1.不需要在applicaton.properties中写配置
2.编写配置类
@Configuration
public class EsConfig {
@Value("${es.port:9200}")
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
- 测试一下
@Controller
public class EsController{
@Autowired
EsConfig esConfig;
@ResponseBody
@RequestMapping(value = "/es", method = RequestMethod.GET)
public String getEsInfo(){
return esConfig.getPort());
}
}
二、第二种写法 @Value("${es.port}")
- 在application.properties中加入配置
# 两种写法都可以
es.port=9200
# es.port:9200
- 读取配置文件测试(可以没有get/set方法)
@Controller
public class EsController {
@Value("${es.port}")
private int port;
@ResponseBody
@RequestMapping(value = "/es", method = RequestMethod.GET)
public String getEsInfo(){
return port;
}
}
三、第三种写法 @Configuration + @Value("${es.port}") (推荐)
- 在application.properties中加入配置
# 两种写法都可以
es.port=9200
# es.port:9200
- 配置类
注意写get/set方法
@Configuration
public class EsConfig {
@Value("${es.port}")
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
- 测试
@Controller
public class EsController {
@Autowired
EsConfig esConfig;
@ResponseBody
@RequestMapping(value = "/es", method = RequestMethod.GET)
public String getEsInfo(){
return esConfig.getPort());
}
}
四、第四种写法 @Configuration + @ConfigurationProperties(推荐)
- 在application.properties中加入配置
# 两种写法都可以
es.port=9200
# es.port:9200
- 配置类
@Configuration
@ConfigurationProperties(prefix = "es")
public class EsConfig {
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
- 测试
@Controller
public class EsController {
@Autowired
EsConfig esConfig;
@ResponseBody
@RequestMapping(value = "/es", method = RequestMethod.GET)
public String getEsInfo(){
return esConfig.getPort());
}
}
【注】配置文件中以","分隔,可以自动赋值给数组
eg:
nums=1,2,3
private int[] nums;
网友评论