从零开始学springboot-自定义配置
从零开始学spingboot-自定义配置
Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。
@Value注解
第一步 application.properties增加配置
application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:
com.csdn.name=烧鸡太子爷
com.csdn.age=32
com.csdn.area=zhejiang
第二步 在类中使用Value注解
通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面
@Component
public class AuthInfo {
@Value("${com.csdn.name}")
private String name;
@Value("${com.csdn.age}")
private String age;
@Value("${com.csdn.area}")
private String area;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
第三步 使用配置类
@RestController
@RequestMapping("/userinfo")
public class UserInfoController {
@Autowired
AuthInfo auth;
@RequestMapping("/getauthinfo")
public AuthInfo getAuthInfo(){
System.out.println("-----------["+auth.getAge()+"]");
return auth;
}
}
第四步 编译运行
@ConfigurationProperties注解
有时候属性太多了,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean,顶部需要使用注解@ConfigurationProperties(prefix = “com.csdn”)来指明使用哪个
@Component
@ConfigurationProperties(prefix = "com.csdn")
public class TestConfigInfo {
private String type;
private String title;
private Map<String, String> login;
private List<String> urls;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Map<String, String> getLogin() {
return login;
}
public void setLogin(Map<String, String> login) {
this.login = login;
}
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
}
配置文件配置:
com.csdn.type=Springboot - @ConfigurationProperties
com.csdn.title=configure
#map
com.csdn.login[username]=admin
com.csdn.login[password]=123456
com.csdn.login[callback]=http://www.csdn.net
#list
com.csdn.urls[0]=https://www.csdn.net/
com.csdn.urls[1]=https://blog.csdn.net/weixin_43254439
com.csdn.urls[2]=https://blog.csdn.net/weixin_43254439/article/details/93949188
com.csdn.urls[3]=https://blog.csdn.net/weixin_43254439/article/details/93415515
com.csdn.urls[4]=https://blog.csdn.net/weixin_43254439/article/details/92435119
@PropertySource注解
有时候我们不希望把所有配置都放在application.properties里面,这时候我们可以另外定义一个,这里我们取名为test.properties,路径放在src/main/resources的config下面,然后将上面的com.csdn.type等配置放在test.properties下面
在TestConfigInfo类上增加PropertySource,指定配置文件路径
@Component
@PropertySource(value = "classpath:config/test.properties")
@ConfigurationProperties(prefix = "com.csdn")
public class TestConfigInfo {
private String type;
private String title;
private Map<String, String> login;
private List<String> urls;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Map<String, String> getLogin() {
return login;
}
public void setLogin(Map<String, String> login) {
this.login = login;
}
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
}
使用注解类
@RestController
@RequestMapping("/userinfo")
public class UserInfoController {
@Autowired
TestConfigInfo testConfig;
@RequestMapping("/gettestinfo")
public TestConfigInfo getTestInfo(){
return testConfig;
}
}
打包运行
参数间相互引用
在test.properties下新增两个参数
com.csdn.city=hangzhou
com.csdn.village=beigang
在application.properties里直接引用
com.csdn.name=烧鸡太子爷
com.csdn.age=32
com.csdn.area=zhejiang.${com.csdn.city}.${com.csdn.village}
运行
源码下载地址:https://download.csdn.net/download/weixin_43254439/11415002
参考网站:http://tengj.top/2017/02/28/springboot2/#自定义属性