SpringBoot(四)---配置文件占位符
在我们配置properties文件时,可以通过文件占位符使用属性文件中的其他属性值。
举个例子:
ConfigBean.java
package com.zk.myspringboot_003;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "demo")
@PropertySource(value = {"classpath:application.properties"})
public class ConfigBean {
private String name;
private String age;
private Map<String, String> login=new HashMap<String,String>();
private List<String> urls=new ArrayList<String>();
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;
}
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;
}
@Override
public String toString() {
return "ConfigBean [name=" + name + ", age=" + age + ", login=" + login + ", urls=" + urls + "]";
}
}
SpringBootApp.java
package com.zk.myspringboot_003;
import java.io.IOException;
import java.util.Properties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.ImportResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
@SpringBootApplication
@ImportResource(locations={"classpath:beans.xml"})
//@ImportResource:导入spring配置文件让配置文件的内容生效
public class SpringBootApp implements ApplicationListener<ApplicationStartedEvent>{
public static void main(String[]args){
SpringApplication.run(SpringBootApp.class, args);
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
// TODO Auto-generated method stub
Properties properties;
try {
properties = PropertiesLoaderUtils.loadAllProperties("classpath:application.properties");
System.out.println(properties);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
TestController.java
package com.zk.myspringboot_003;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Value("${demo.name}")
private String name;
@Value("${demo.age}")
private String age;
@Autowired
private Environment environment;
// @Autowired
// private ConfigBeanValue configbeanValue;
@Autowired
private ConfigBean configBeanProp;
@RequestMapping("/demo")
public String hello()
{
return "hello,"+name+",you are "+age+"demo1";
}
@RequestMapping("/demo2")
public String getprops(){
String name=environment.getProperty("demo.name");
String age=environment.getProperty("demo.age");
List<String> urlslist=configBeanProp.getUrls();
Map<String,String> loginmap=configBeanProp.getLogin();
for(Entry<String, String> e:loginmap.entrySet())
{
System.out.println(e.getKey()+":"+e.getValue());
}
return "hello,"+name+".you are "+age+"demo2\n"+urlslist.toString()+"\n"+loginmap.get("username");
}
@RequestMapping("/demo3")
public String getBean(){
String name=configBeanProp.getName();
String age=configBeanProp.getAge();
return "hello,"+name+".you are "+age+"demo3";
}
}
application.properties
demo.name=zk${demo.age}
demo.age=25${random.uuid}_age
#map
demo.login[username]=zhangdeshuai
demo.login[password]=zhenshuai
demo.login[callback]=http://www.flyat.cc
#list
demo.urls[0]=http://ztool.cc
demo.urls[1]=http://ztool.cc/format/js
demo.urls[2]=http://ztool.cc/str2image
demo.urls[3]=http://ztool.cc/json2Entity
demo.urls[4]=http\://ztool.cc/ua
在配置文件中的占位符为
${demo.age}
在运行代码后运行的结果如下:


浙公网安备 33010602011771号