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}

在运行代码后运行的结果如下:

猜你喜欢

转载自www.cnblogs.com/longlyseul/p/12528308.html