SpringBoot yml properties文件
2024-09-29 01:38:32
一、在SpringBoot实现属性注入:
1)、添加pom依赖jar包;
1 <!-- 支持 @ConfigurationProperties 注解 -->
2 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->
3 <dependency>
4 <groupId>org.springframework.boot</groupId>
5 <artifactId>spring-boot-configuration-processor</artifactId>
6 <version>${spring-boot.version}</version>
7 </dependency>
2)、在yml配置文件中:
1 #pojo属性注入
2 Mybar: #pojo中的prefix值
3 name: 张三
4 arrs: 赵,钱,孙,李
5 nameList:
6 - name: 刘
7 value: 刘备
8 - name: 张
9 value: 张飞
10 BarNameList:
11 - 早退次数
12 - 迟到次数
13 - 旷工天数
14 map:
15 key1: 曹操
16 key2: 曹丕
17 key3: 曹植
3)、pojo通过set、get方法获取呀,yml中的值
1 package cn.com.venus.oa.pojo;
2
3 import java.util.List;
4 import java.util.Map;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.boot.context.properties.ConfigurationProperties;
9 import org.springframework.stereotype.Component;
10
11 /**
12 * 加载yaml配置文件的方法
13 * spring-boot更新到1.5.2版本后locations属性无法使用
14 * @PropertySource注解只可以加载proprties文件,无法加载yaml文件
15 * 故现在把数据放到application.yml文件中,spring-boot启动时会加载
16 */
17 @Component
18 @ConfigurationProperties(prefix="Mybar")
19 public class Bar {
20 private String name;
21
22 private String[] arrs;
23
24 private List<Map<String,String>> nameList;
25
26 private List<String> BarNameList;
27
28 private Map<String,String> map;
29
30 public String getName() {
31 return name;
32 }
33
34 //String类型的一定需要setter来接收属性值;maps, collections, 和 arrays 不需要
35 public void setName(String name) {
36 this.name = name;
37 }
38
39 public String[] getArrs() {
40 return arrs;
41 }
42
43 public void setArrs(String[] arrs) {
44 this.arrs = arrs;
45 }
46
47 public Map<String, String> getMap() {
48 return map;
49 }
50
51 public void setMap(Map<String, String> map) {
52 this.map = map;
53 }
54
55 public List<Map<String, String>> getNameList() {
56 return nameList;
57 }
58
59 public void setNameList(List<Map<String, String>> nameList) {
60 this.nameList = nameList;
61 }
62
63 public List<String> getBarNameList() {
64 return BarNameList;
65 }
66
67 public void setBarNameList(List<String> barNameList) {
68 BarNameList = barNameList;
69 }
70
71
72 }
4)、最终在Controller中执行自动注入就可以完成yml配置属性值:
1 @Autowired
2 private Bar bar;
二、properties配置文件:
使用@PropertySource注解加载配置文件,该注解无法加载yml配置文件。使用@Value注解获得文件中的参数值
package com.sun.configuration; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; /**
* 加载properties配置文件,在方法中可以获取
* abc.properties文件不存在,验证ignoreResourceNotFound属性
* 加上encoding = "utf-8"属性防止中文乱码,不能为大写的"UTF-8"
* Created by sun on 2017-3-30.
*/
@Configuration
@PropertySource(value = {"classpath:/config/propConfigs.properties","classpath:/config/abc.properties"},
ignoreResourceNotFound = true,encoding = "utf-8")
public class PropConfig { // PropertySourcesPlaceholderConfigurer这个bean,
// 这个bean主要用于解决@value中使用的${…}占位符。
// 假如你不使用${…}占位符的话,可以不使用这个bean。
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
获取properties文件参数值有两种方法,一种获得Environment 的对象,第二种就是@Value注解
1 @Autowired
2 private Environment env;
3 @Value("${age}")
4 String name;
5
6
7 @RequestMapping("/")
8 @ResponseBody
9 String home(HttpServletRequest req) throws JsonProcessingException, UnsupportedEncodingException {
10 logger.info("测试通过!!!");
11 ObjectMapper objectMapper = new ObjectMapper();
12 //测试加载yml文件
13 System.out.println("simpleProp: " + config.getSimpleProp());
14 System.out.println("arrayProps: " + objectMapper.writeValueAsString(config.getArrayProps()));
15 System.out.println("listProp1: " + objectMapper.writeValueAsString(config.getListProp1()));
16 System.out.println("listProp2: " + objectMapper.writeValueAsString(config.getListProp2()));
17 System.out.println("mapProps: " + objectMapper.writeValueAsString(config.getMapProps()));
18
19 //测试加载properties文件
20 System.out.println(env.getProperty("name"));//孙凯
21 System.out.println(env.getProperty("abc"));//null
22 System.out.println(name);//26
23
24 return "Hello World!";
25 }
test read ymlfile
fruit:
name: apple
amount: 5
自定义的属性和值
myProps:
simpleProp: simplePropValue
arrayProps: 1,2,3,4,5
listProp1:
- name: abc
value: abcValue
- name: efg
value: efgValue
listProp2:
- config2Value1
- config2Vavlue2
mapProps:
key1: value1
key2: value2
server:
port: 8080
address: localhost
context-path: /springboot-jpa
1.@value注解
2.javaBean:
最新文章
- 如何利用Matlab进行ROC分析
- 【VB6笔记-02】从Command中获取链接参数
- 7件你不知道但可以用CSS做的事
- jQuery经典面试题及答案精选[转载]
- yii2在ubuntu下执行定时任务
- 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
- 武汉科技大学ACM :1006: 华科版C语言程序设计教程(第二版)习题7.15
- 随机生成A~Z的字母CharDemo
- 1.1 什么是LinQ
- C#串口通信程序详解
- CentOS 7.0 安装配置 kafka 消息队列
- Spring AOP分析(1) -- 基本概念
- FPM三:简单的SEARCH(OIF)
- Python的内置方法——补充
- request.servervariables参数
- 深入理解 Laravel 中 config 配置加载原理
- 搭建好lamp,部署owncloud。
- excel文档中数据导入sql server注意事项
- BigDecimal精度与相等比较的坑
- Android AppCompat 需要 API 级别 11