spring 配置文件映射成实体

maven 依赖jar

  • maven 依赖jar
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

配置

  • 配置
    配置文件分为properties和yml格式

a) 在默认的spring 配置文件中配置

server:
  port: 8082
  servlet:
    context-path: /
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
    username: root
    password: mysql123
  jpa:
    database: MySQL
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: update
person:
  lastName: hello
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {
    
    k1: v1,k2: 12}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 12

b) 单独建立映射文件(可以单独建立yml文件,将需要属性单独写在独立的文件中)

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

yml 文件转化(如果用properties配置,无需创建此类)

  • yml 文件转化(如果用properties配置,无需创建此类)
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.DefaultPropertySourceFactory;
import org.springframework.core.io.support.EncodedResource;

import java.io.IOException;

public class YamlPropertyLoaderFactory extends DefaultPropertySourceFactory {
    
    
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
    
    

        if (null == resource) {
    
    
            super.createPropertySource(name, resource);
        }
        return new YamlPropertySourceLoader().load(resource.getResource().getFilename(), resource.getResource()).get(0);
    }

}

映射

  • 映射
    在工程中建立配置文件对应的实体类
// 如果为yml独立文件则需要添加本行注释
// @PropertySource(value = "classpath:/obj.yml", factory = YamlPropertyLoaderFactory.class)
// 如果为properties配置文件,则使用本行注释
// @PropertySource(value = "classpath:/obj.properties")
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    
    

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

    public String getLastName() {
    
    
        return lastName;
    }

    public void setLastName(String lastName) {
    
    
        this.lastName = lastName;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public Boolean getBoss() {
    
    
        return boss;
    }

    public void setBoss(Boolean boss) {
    
    
        this.boss = boss;
    }

    public Date getBirth() {
    
    
        return birth;
    }

    public void setBirth(Date birth) {
    
    
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
    
    
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
    
    
        this.maps = maps;
    }

    public List<Object> getLists() {
    
    
        return lists;
    }

    public void setLists(List<Object> lists) {
    
    
        this.lists = lists;
    }

    public Dog getDog() {
    
    
        return dog;
    }

    public void setDog(Dog dog) {
    
    
        this.dog = dog;
    }
}

调用

  • 调用
@RestController
public class DCController {
    
    
    @Autowired
    Person person;

    @GetMapping("/test")
    public String test() {
    
    
        StringBuffer sb = new StringBuffer();
        sb.append( "Springboot Build Anything !!!" );
        sb.append("<br/>");
        sb.append(person.getLastName());
        sb.append("<br/>");
        sb.append(person.getDog().getName());
        sb.append("<br/>");
        return  sb.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38011805/article/details/113994150