基于gradle读取 .YML 配置文件(application.yml)中的属性值

1. 新建工程

基于gradle读取 .YML 配置文件(application.yml)中的属性值

2. 点Next

基于gradle读取 .YML 配置文件(application.yml)中的属性值

3. 新建如下名字

基于gradle读取 .YML 配置文件(application.yml)中的属性值

4. 注意填写自己安装的gradle路径

基于gradle读取 .YML 配置文件(application.yml)中的属性值

5. 新建之后的工程时这样的

基于gradle读取 .YML 配置文件(application.yml)中的属性值

6. 新建application.yml文件

基于gradle读取 .YML 配置文件(application.yml)中的属性值

注意:ide默认对yml的支持不好,安装插件intellij-ansible-0.9.5支持即可,插件下载地址:http://pan.baidu.com/s/1nvgECTN 安装方法这里不赘述, 安装方法参考:https://blog.csdn.net/u014042066/article/details/73826072

7. 在文件中输入以下属性
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
8. 新建java类MyProps.java 

基于gradle读取 .YML 配置文件(application.yml)中的属性值

9. 增加以下属性,和各自set get方法,可按Alt+insert快速生成 

package com.mantis;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
@ConfigurationProperties( prefix="myProps") //接收application.yml中的myProps下面的属性
public class MyProps {

    private String simpleProp;
    private String arrayProps;
    private List<Map<String,String>> listProp1=new ArrayList<>();
    private List<String>listProp2=new ArrayList<>();
    private Map<String,String>mapProps=new HashMap<>();

    public void setMapProps(Map<String, String> mapProps) {
        this.mapProps = mapProps;
    }

    public String getSimpleProp() {
        return simpleProp;
    }

    public String getArrayProps() {
        return arrayProps;
    }

    public List<Map<String, String>> getListProp1() {
        return listProp1;
    }

    public List<String> getListProp2() {
        return listProp2;
    }



    public void setSimpleProp(String simpleProp) {
        this.simpleProp = simpleProp;
    }

    public void setArrayProps(String arrayProps) {
        this.arrayProps = arrayProps;
    }

    public void setListProp1(List<Map<String, String>> listProp1) {
        this.listProp1 = listProp1;
    }

    public void setListProp2(List<String> listProp2) {
        this.listProp2 = listProp2;
    }



    public Map<String, String> getMapProps() {
        return mapProps;
    }

    @Override
    public String toString() {
        return "MyProps{" +
                "simpleProp='" + simpleProp + '\'' +
                ", arrayProps='" + arrayProps + '\'' +
                ", listProp1=" + listProp1 +
                ", listProp2=" + listProp2 +
                ", mapProps=" + mapProps +
                '}';
    }
}


10 .接下来解决报错问题,在build.gradle中加上以**解

基于gradle读取 .YML 配置文件(application.yml)中的属性值


dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    // spring boot 相关
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-test')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    compile('org.springframework.boot:spring-boot-starter-aop')
    compile('org.springframework.boot:spring-boot-starter-data-redis')
    compile('org.springframework.boot:spring-boot-configuration-processor')
}

来个小插曲:这里需要说明的是,gradle的注解依赖在*仓库有支持,只要搜索对应的JAR包就可以了,

基于gradle读取 .YML 配置文件(application.yml)中的属性值

当然你要是已经有Maven格式的依赖可以直接复制到build.gradle中,他会自动给你转换成gradle的依赖格式.

但是复制的时候一定要把dependency  一起复制进去

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

有的没有自动转换,可以自己手动转换,对应的格式如下图

基于gradle读取 .YML 配置文件(application.yml)中的属性值

11.接下来创建启动类SpringBootApplication 

package com.mantis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;

//@SpringBootApplication
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
public class ReadYMLApplication {

    public static void main(String[] args) {
        SpringApplication.run(ReadYMLApplication.class, args);
    }
}

注意: 如果只用@SpringBootApplication的注解不加上exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}启动项目时会导致如下报错
启动报错(Cannot determine embedded database driver class for database type NONE) 有兴趣各位客官可以试试
12.导入依赖之后,在MyProps.class文件中按Alt+Enter键去掉报错,没有报红之后按Ctrl+Shift+T创建单元测试类,进行一定的删除与修改,如下

package com.mantis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith( SpringJUnit4ClassRunner.class )
@SpringBootTest(classes = ReadYMLApplication.class)
public class MyPropsTest {
   @Autowired
    private MyProps myProps;

   @Test  //trstReadYmlConfig()方法
    public void trstReadYmlConfig(){
       System.out.printf("the myProps is : "+myProps.toString());

   }
}


13.最后项目结构如下,点击下面的按钮既可以开始单元测试了,这个教程写的比较详细,适合刚刚入坑gradle

基于gradle读取 .YML 配置文件(application.yml)中的属性值

单元测试结果如下

基于gradle读取 .YML 配置文件(application.yml)中的属性值

最后再发个demo地址:https://download.csdn.net/download/master_shifu_/10465336