java框架之Spring boot三:SpringBoot自定义配置一

Posted 爸爸去哪了2之熊猫三胞胎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java框架之Spring boot三:SpringBoot自定义配置一相关的知识,希望对你有一定的参考价值。

java框架之Spring boot三:SpringBoot自定义配置一

私有化配置文件

刚才我们介绍了在主配置文件汇中配置对应的文件,如果我们想要自定义配置文件该怎么处理呢?
现在就要给大家介绍我们的@PropertySource注解。
@PropertySource:注解可以从properties文件中,获取对应的key-value值,将其赋予变量
同时,这个注解可以加载多个配置文件生成对应的bean类。
对应的bean,Person.java:

package com.example.demo.bean;


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

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

@PropertySource(value= "classpath:person.properties")
@Component
@ConfigurationProperties(prefix="person")
public class Person 
    /**/
    private String name;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;
    public Person() 
        super();
    
    public Person(String name, Integer age, Boolean boss, Date birth, Map<String, Object> maps, List<Object> lists,
            Dog dog) 
        super();
        this.name = name;
        this.age = age;
        this.boss = boss;
        this.birth = birth;
        this.maps = maps;
        this.lists = lists;
        this.dog = dog;
    
    public String getName() 
        return name;
    
    public void setName(String name) 
        this.name = name;
    
    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;
    
    @Override
    public String toString() 
        return "Person [lastName=" + name + ", age=" + age + ", boss=" + boss + ", birth=" + birth + ", maps="
                + maps + ", lists=" + lists + ", dog=" + dog + "]";
    


对应的配置文件,person.properties:

person.name=bbbb
person.age=21
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=15
person.lists=a,b,c
person.dog.name=dog
person.dog.age=15

其他不变,这样就能获取到该配置文件中的信息了

注意事项:
1、@ConfigurationProperties(prefix=”person”)这个注解不能取消
2、person.properties的路径要正确

配置文件占位符

配置文件的书写:

person.name=bbbb$random.uuid
person.age=$random.int
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=15
person.lists=a,b,c
person.dog.name=$person.name's dog
person.dog.age=15

实现的结果:

Person [lastName=bbbb36f62437-bac7-4c8e-8686-c7c9b02f3d92, age=1353596658, boss=false, birth=Fri Dec 15 00:00:00 CST 2017, maps=k1=v1, k2=15, lists=[a, b, c], dog=Dog [name=bbbbbeca97d0-7c5e-4e96-abe3-a8d630672275's dog, age=15]]

profile

profile是Spring对不同环境提供不同配置的功能的支持,可以通过激活、指定参数等方式快速切换环境变量。
主要说一下两种方式:

多profile文件

我们在主配置文件编写的时候,文件名可以使 application-profile.properties

application.properties:

server.port=8081
spring.profiles.active=dev

application-dev.properties:

server.port=8082

注意:当有多个配置文件后,没有进行配置文件配置,默认启用application.properties

以上是关于java框架之Spring boot三:SpringBoot自定义配置一的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 入门之持久层篇

为什么使用 Spring Boot?

spring boot框架学习学前掌握之重要注解-通过java的配置方式进行配置spring

spring boot框架学习学前掌握之重要注解-通过java的配置方式进行配置spring

Spring Boot 2.2.0,性能提升+支持Java13

spring boot框架学习学前掌握之重要注解-java配置方式