SPRING、SPRING BOOT解析PROPERTIES、XML、YML、YAML文件的方法

一、解析PROPERTIES和XML

  • 这里使用了FileSystemResource,spring的Resource继承于InputStreamSource,也就是spring封装了InputStreamSource;可以从spring源码看到除了FileSystemResource还有其他的实现,比如可以不用绝对路径用ClassPath,对应的实现类就是ClassPathResource
/***
	 * 解析Properties 、xml
	 * */
	public static void loadProperties(){

		// 第一种
		Properties props = new Properties();
		//查找配置文件的属性 并且都合并到props
		FileSystemResource location = new FileSystemResource(new File("F:\\work\\unknown\\unknown-admin\\config\\application.properties"));
		try {
			PropertiesLoaderUtils.fillProperties(props, new EncodedResource(location, (String) null));
			System.out.println(props.getProperty("zookeeper.address"));
		} catch (IOException e) {
			e.printStackTrace();
		}

		//第二种 spring boot的
		try {
			List<PropertySource<?>>  propertySourceList = new PropertiesPropertySourceLoader().load("app",new FileSystemResource("F:\\work\\unknown\\unknown-admin\\config\\application.properties"));
			System.out.println(propertySourceList.get(0).getProperty("zookeeper.address"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

二、解析YML和YAML

  • 这里我就使用的ClassPathResource实现,根据自己实际情况选择用哪个具体实现。
	/***
	 * 目前从源码中找到的读取yml、yaml文件的两种方式
	 * */
	public static void loadYml(){
		// 第一种  spring boot解析yml
		YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
		//yaml.setResources(new FileSystemResource("config.yml"));//File引入
		yaml.setResources(new ClassPathResource("/application-dev.yml"));//classPath引入
		System.out.println(yaml.getObject().get("spring.data.mongodb.uri"));



		//第二种  YamlPropertySourceLoader
		Resource resource = new ClassPathResource("/application-dev.yml");
		//List<Map<String, Object>> loaded = new OriginTrackedYamlLoader(resource).load();
		try {
			List<PropertySource<?>>  propertySourceList = new YamlPropertySourceLoader().load("/application.yml",resource);
			System.out.println(propertySourceList.get(0).getProperty("spring.data.mongodb.uri"));
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

3,应用 springboot读取properties文件

使用如下.properties为后缀的默认application.properties文件,yml格式文件也同理

 

一、使用`@ConfigurationProperties`注解将配置文件属性注入到自定义配置对象类中

(1)、首先定义配置对象

 

(2)、具体使用,运行后将可以得到实体返回数据

 

 

 

 

二、使用`@Value("${propertyName}")`注解,在需要使用的类中使用成员变量

 

 

 

 

 

三、使用Environment,在任何想要用的地方直接获取值

 

四、通过注册监听器(`Listeners`) + `PropertiesLoaderUtils`的方式(比较前三种方式,更复杂)

(1)、编写配置文件监听器,用来加载自定义配置文件 ,实现ApplicationListener<ApplicationStartedEvent>

 

(2)、编写加载配置文件的类

 

3、修改启动类,注册监听器

 

4.编写测试类,运行结果如下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值