spring-boot获取yml里面的属性值

目录

开发环境

项目结构

pom依赖

springboot启动类

person.yml

Dog.java

SpringbootDemoApplicationTests

控制台输出


开发环境

  • idea
  • jdk1.8

项目结构

spring-boot获取yml里面的属性值_第1张图片

pom依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
         
    
    com.springboot
    springboot_demo
    0.0.1-SNAPSHOT
    springboot_demo
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.projectlombok
            lombok
            true
        
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


springboot启动类

package com.springboot.springboot_demo;

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;

@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
    /**
     * 设置自定义yml位置
     *
     * @return
     */
    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(
                new ClassPathResource[] {
                        /** 请求url地址 */
                        new ClassPathResource("config/person.yml")
                });
        pspc.setProperties(yaml.getObject());
        return pspc;
    }
}

person.yml

person:
  lastName: zhangsan
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: v2}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 2

person.java

package com.springboot.springboot_demo.pojo;

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

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 将配置文件中配置的每一个属性的值映射到person
 * @ConfigurationProperties 告诉springboot 将本类中的值与配置文件中的值绑定
 * prefix = "person" 配置文件下的那个属性下的
 * 只有这个组件是容器中的组件才能使用@Component
 */
@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map maps;
    private List lists;
    private Dog dog;

}
 
  

Dog.java

package com.springboot.springboot_demo.pojo;

import lombok.Data;

@Data
public class Dog {
    private String name;
    private String age;

}

SpringbootDemoApplicationTests

package com.springboot.springboot_demo;

import com.springboot.springboot_demo.pojo.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * springboot单元测试
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootDemoApplicationTests {

    @Autowired
    private Person person;
    @Value("${person.lastName}")
    private String username;
    @Test
    public void contextLoads() {
        System.out.println(person);
    }
    @Test
    public void personCopy() {
        System.out.println(username);
    }

}

控制台输出

Person(lastName=zhangsan, age=18, boss=false, birth=Tue Dec 12 00:00:00 CST 2017, maps={k1=v1, k2=v2}, lists=[lisi, zhaoliu], dog=Dog(name=小狗, age=2))
zhangsan

 

你可能感兴趣的:(spring,Boot,spring-boot)