Springboot加载⾃定义yaml⽂件及复杂类型ListMap使⽤springboot的版本:v2.2.1.RELEASE
因为springboot在项⽬启动的时候是不会⾃动将⾃定义(名字不是application*.yml)的配置⽂件加载到spring容器的,⽽使⽤
@PropertySource(value = "l")这样的⽅式是不能加载.yml⽂件的。所以我们需要使⽤另外的⽅式。
1.将yaml⽂件加载到spring容器
在springboot启动类(Application.java)中将⾃定义的yaml⽂件加载到spring容器
package com.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class YamlApplication {
public static void main(String[] args) {
SpringApplication.run(YamlApplication .class, args);
}
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer configurer = new
PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("l"),new ClassPathResource("l"));
configurer.Object());
return configurer;
}
}
这样就将⾃定义的l和l加载到了spring容器中。
2.yaml⽂件实例
#test1 config
test1:
test1List:
- testId: admin
testName: admin
- testId: User
testName: User
#test2 config
test2:
test2List:
- testId: User
apis:
api1: [get,post]
- testId: admin
apis:
api1: [get,post]
api2: [get,post]
api3: [get,put]
3.将yml⽂件的内容注⼊到实体Bean
在定义了yaml⽂件后,我们需要定义与之数据结构相对应的实体bean(实在不知道可以先定义为Object然后调试看映射的数据皆结构,前提是定义的yaml⽂件的结构是正确的)。
将l注⼊到Test1Bean中
package com.springbootmon.beans;
import lombok.Data;
import org.t.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Data
@Component
@ConfigurationProperties(prefix = "test1") //指定⾸节点的名字然后⾃动匹配注⼊
public class Test1Bean {
//l中test1为第⼀层节点下⾯是test1List
private List<Test1IdBean> test1List;
}
Test1IdBean结构
package com.springbootmon.beans;
import lombok.Data;
@Data
public class Test1IdBean {
private String testId;
private String testName;
}
将l注⼊到Test2Bean中
package com.springbootmon.beans;
import lombok.Data;
import org.t.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Data
@Component
@ConfigurationProperties(prefix = "test2")
public class Test2Bean {
private List<Test2ApiBean> test2List;
}
Test2ApiBean结构
package com.springbootmon.beans;
import lombok.Data;
import java.util.List;
springboot结构import java.util.Map;
@Data
public class Test2ApiBean {
private String testId;
private Map<String, List<String>> apis;
}
⾄此已经⼤功告成,在springboot项⽬启动的收就会成功的将我们⾃定义yaml⽂件加载到spring容器,并⾃动注⼊我们定义的实体Bean中去。
4.使⽤
@Log4j2
@Component
public class SchemaYmlTest {
@Autowired
private Test1Bean test1Bean;
@Autowired
private Test2Bean test2Bean;
public void testYml() {
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。