可以看一下介绍,这里只提供实现代码。---> 多种yml/properties配置文件读取方式
以下正文:
1.自定义YamlConfigTool工具类
java
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
public class YamlConfigTool {
private static Properties ymlProperties = new Properties();
public static Properties getYmlProperties() {
return ymlProperties;
}
public static void setYmlProperties(Properties ymlProperties) {
YamlConfigTool.ymlProperties = ymlProperties;
}
public static YamlConfigTool create(Properties properties) {
return new YamlConfigTool(properties);
}
/**
* 有参构造
* @param properties
*/
public YamlConfigTool(Properties properties) {
setYmlProperties(properties);
}
public static String getStr(String key) {
return ymlProperties.getProperty(key);
}
public static Integer getInt(String key) {
return Integer.valueOf(ymlProperties.getProperty(key));
}
public static Boolean getBoo(String key) {
return Boolean.valueOf(ymlProperties.getProperty(key));
}
public static List<String> getList(String key) {
return Arrays.asList(ymlProperties.getProperty(key).split(","));
}
2.定义公共的读取内容
java
import org.springframework.stereotype.Component;
/**
* @author 多个接口以区分对应的配置
* @date 2020-03-04 11:02
*/
@Component
public class CommonTool {
/**
* 可以多个接口,也可以多个类,用于区分
*/
public interface RedieEnum{
String MANAGER_OFFICE = YamlConfigTool.getStr("AAAAA.BBBB");
}
//其他需要通过统一工具返回的内容
//public static Db getDb(String type) {
// return Db.use(DSFactory.get(type));
//}
//
//public static Session getSession(String type) {
// return Session.create(DSFactory.get(type));
//}
}
3.重写YamlPropertiesFactoryBean(重要一步)
java
/**
* 构建配置文件读取操作统一工具类
*/
@Value("${spring.profiles.active}")
private String profilesActive;
@Bean
public YamlConfigTool ymlConfigurerUtil() {
//1:加载配置文件
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
// 2:将加载的配置文件交给 YamlPropertiesFactoryBean
yamlPropertiesFactoryBean.setResources(new ClassPathResource("application.yml"), new ClassPathResource(StrUtil.format("application-{}.yml", profilesActive)));
// 3:将yml转换成 key:val
Properties properties = yamlPropertiesFactoryBean.getObject();
// 4: 将Properties 通过构造方法交给我们写的工具类
return new YamlConfigTool(properties);
}
4.测试
java
@SpringBootTest
public class TestSomething {
@Test
void contextLoads() {
System.err.println(CommonTool.RedieEnum.MANAGER_OFFICE);
}
}