1.@ConfigurationProperties获取yml配置文件信息
1.1:pom配置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.22</version> </dependency> <!--导入配置文件处理器,配置文件绑定就会有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
1.2:application.yml
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14person: lastName: zhangsan age: 18 boss: false brith: 2019/12/01 maps: {k1: v1,k2: v2} lists: - list - wang dog: name: 小狗 age: 12
1.3:entiy
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23/** 将配置文件中配置的每一个属性的值,映射在这个组件中 ConfigurationProperties:告诉spring boot将本类中的所有属性和配置文件中的相关配置进行绑定: prefix = "person "配置文件中哪个下面的所有属性进行--映射 只有这个组件是容器中的组件,才能使用容器提供的ConfigurationProperties功能 注意:默认读取全局配置文件 */ @Component @ConfigurationProperties(prefix = "person") @Data public class Person { private String lastName; private Integer age; private boolean boss; private Date brith; private Map<String,Object> maps; private List<String> lists; private Dog dog; }
1.4:测试
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13@RunWith(SpringRunner.class) @SpringBootTest public class SpringbootDempApplicationTests { @Autowired private Person person; @Test public void contextLoads() { System.out.println(person); } }
注意:
如果是application.properties配置文件编码问题.(idea默认是utf-8)。
解决:settings--搜索(file enc)
2.获取application.properties配置文件信息
2.1:application.properties
复制代码
1
2
3
4
5
6
7
8
9
10person.last-name=沈宁 person.age=22 person.boss=false person.brith=2019/12/01 person.maps.k1=v1 person.maps.k2=v2 person.lists=a,b,c,d,e,e,p person.dog.name=宗臣 person.dog.age=18
2.2:entity
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20@Data @Component //@Validated //数据校验 public class Persons { //获取配置文件中的属性 @Value("${person.last-name}") private String lastName; //直接给变量赋值 @Value("#{11*2}") private Integer age; @Value("${person.boss}") private boolean boss; @Value("${person.brith}") private Date brith; // @Value 不支持 private Map<String,Object> maps; @Value("${person.lists}") private List<String> lists; private Dog dog; }
2.3:测试
同1.4
2.4.@Value和@ConfigurationProperties区别
@ConfigurationProperties | @Value | |
功能 | 批量注入配置文件的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
spel(spring表达式语言) | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
根据需求使用。。
3. @PropertySource使用
3.1:自定义一个配置文件(我就全部加载了)
@PropertySource作用:加载自定义配置文件.
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13@PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") @Data public class Person { private String lastName; private Integer age; private boolean boss; private Date brith; private Map<String,Object> maps; private List<String> lists; private Dog dog; }
4.@Configuration(自定义配置类)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13/** Configuration:指定当前类是一个配置类 Bean:将方法的返回值添加到容器中 */ @Configuration public class MyTest { @Bean public String testData(){ String test="我是返回值"; return test; } }
5.配置文件占位符
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13#随机uuid person.last-name==宁${random.uuid} person.age=22 person.boss=false person.brith=2019/12/01 person.maps.k1=v1 person.maps.k2=v2 person.lists=a,b,c,d,e,e,p #获取之前配置信息的值,如果没有默认值 person.dog.name=${person.hello:sss}_宗臣 #person.dog.name=${person.last-name}_宗臣 person.dog.age=18
6.Profile
Profile是spring对不同环境提供不同配置功能的支持。
6.1:多properties激活
在application.properties里配置,注销spring.profiles.active,激活自己。
复制代码
1
2#激活配置文件 spring.profiles.active=dev
6.2:yml激活
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server: port: 8010 #这是代表激活dev块的配置,不配置自己8010 spring: profiles: dev --- server: port: 8011 spring: profiles: dev --- server: port: 8012 spring: profiles: prod
最后
以上就是狂野蜜蜂最近收集整理的关于SpringBoot 获取yml配置文件信息的全部内容,更多相关SpringBoot内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复