一、在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:


最新文章

  1. 如何利用Matlab进行ROC分析
  2. 【VB6笔记-02】从Command中获取链接参数
  3. 7件你不知道但可以用CSS做的事
  4. jQuery经典面试题及答案精选[转载]
  5. yii2在ubuntu下执行定时任务
  6. 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
  7. 武汉科技大学ACM :1006: 华科版C语言程序设计教程(第二版)习题7.15
  8. 随机生成A~Z的字母CharDemo
  9. 1.1 什么是LinQ
  10. C#串口通信程序详解
  11. CentOS 7.0 安装配置 kafka 消息队列
  12. Spring AOP分析(1) -- 基本概念
  13. FPM三:简单的SEARCH(OIF)
  14. Python的内置方法——补充
  15. request.servervariables参数
  16. 深入理解 Laravel 中 config 配置加载原理
  17. 搭建好lamp,部署owncloud。
  18. excel文档中数据导入sql server注意事项
  19. BigDecimal精度与相等比较的坑
  20. Android AppCompat 需要 API 级别 11

热门文章

  1. MVC 自定义 以表达式树为参数的htmlhelper
  2. bzoj4471 bzoj4490 随机数生成器Ⅱ
  3. NB-IOT/LoRa/Zigbee无线组网方案对比
  4. Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml
  5. Bootstrap:目录
  6. 图片尺寸批量resize的matlab并行代码
  7. PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题
  8. Spark JDBC入门测试
  9. MIT提出精细到头发丝的语义分割技术,打造效果惊艳的特效电影
  10. php 学习笔记 设计和管理