一:EnvironmentPostProcessor接口的使用,使用该接口,可以实现动态(就是根据业务逻辑)的加载properties文件。
@Component
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
try(InputStream inputStream=new FileInputStream("E:/tmp/springboottest.properties")){
Properties source=new Properties();
source.load(inputStream);
PropertiesPropertySource propertySource=new PropertiesPropertySource("my", source);
environment.getPropertySources().addLast(propertySource);
}catch (IOException e) {
e.printStackTrace();
}
}
}
然后获取配置文件中的内容:
public static void main(String[] args) {
ConfigurableApplicationContext context=SpringApplication.run(App.class, args);
context.getBean(Runnable.class).run();
//String property=context.getEnvironment().getProperty("local.ip");
//System.out.println("获取到的参数是:"+property);
//context.getBean(UserConfig.class).show();
//context.getBean(Dbconfig.class).show();
//context.getBean(DataSourceProperties.class).show();
System.out.println(context.getBean(TomcatProperties.class));
System.out.println(context.getEnvironment().getProperty("spring.boot.name"));
context.close();
}
二:springboot支持数组和集合的配置;
package com.zcp.springstart;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 支持获取数组,集合
* 配置方式为:name[index]=value
* 在application.properties文件中的写法:
* data.url=127.0.0.1
data.port=1234
data.name=123
data.password=root.post
ds.hosts[0]=128.128.128.0
ds.hosts[1]=128.128.128.1
ds.hosts[2]=128.128.128.2
ds.hosts[3]=128.128.128.3
ds.ports[0]=8888
ds.ports[1]=8889
ds.ports[2]=8890
ds.ports[3]=8891
ds.ports[4]=8892
*
Title: TomcatProperties
*
Description:
*
Company: www.itcast.cn
* @version 1.0
*/
@Component
@ConfigurationProperties("ds")
public class TomcatProperties {
private List
私人String[]港口;
公共String [] getPorts () {
返回港口;
}
公共空setPorts (String[]端口){
。港口=港口;
}
公共List
返回主机;
}
公共空setHosts (List
。主机=主机;
}
@Override
公共字符串toString () {
返回“TomcatProperties(主机=? +”,端口=" + Arrays.toString(港口)+“]”;
}
}
三:读取的应用程序- *。null