欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot模板整合(二)整合自定义属性和自定义配置文件

程序员文章站 2022-05-30 20:22:50
...

目的

将springboot模板整合(一)的基础上,添加自定义属性,自定义配置文件以及多配置文件的关联

设置编码格式

在进行下面操作前,需要设置编码格式,选择File——》settings——》搜索File Encodings
如下图所示
Springboot模板整合(二)整合自定义属性和自定义配置文件
在上图3,4,5,6 三个位置的编码格式修改为utf-8
注意勾选“Transparent native-to-ascii conversion”前的复选框,这个复选框的意思是"将所有字符转成ascii编码保存(实际上就是转成unicode转义序列)"

乱码问题

如果按照上图设置还是出现乱码问题,那么先删除原有的配置文件,然后重新创建应该就会生效了

多环境配置文件

在springboot项目中默认在resource文件下有一个application.properties文件,而我们的相关配置也一般都写在这个
配置文件上,但是有时我们需要对现有的接口进行测试,springboot为我们提供了一种方法,可以在测试的时候,
引用测试配置文件。
具体的方法如下:
      首先在application.properties文件的同一级目录下,创建一个application-test.properties配置文件,我们可以
将需要测试的数据放到这个文件中。

如何在application.properties文件中引用application-test.properties配置文件?
在application.properties文件中配置如下内容:

#通过springboot的profiles属性实现加载不同的properties文件
spring.profiles.active=test

自定义属性

在application-test.properties文件中配置对应的属性值,如下所示

my.name=黎明
my.age =24

测试自定义属性

创建一个实体类

package com.example.springboot_template01.entity;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 自定义属性的基类
 */
@Component
public class Custom {
    @Value("${my.name}")
    private String studentName;
    @Value("${my.age}")
    private Integer studentAge;

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public Integer getStudentAge() {
        return studentAge;
    }

    public void setStudentAge(Integer studentAge) {
        this.studentAge = studentAge;
    }
}

接口测试类

package com.example.springboot_template01.web;

import com.example.springboot_template01.entity.Custom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 自定义属性测试
 */
@RestController
public class CustomTestController {
    @Autowired
    private Custom custom;
    @Value("${my.name}")
    private String name;
    @GetMapping("/customTest")
    public String resultCustomTest(){
        //两种取自定义属性值的方法,一种是将属性值赋值给对象的属性,如custom;另外一种是直接通过属性赋值,如下面的name
        return custom.getStudentName()+":"+custom.getStudentAge()+":"+name;
    }
}


测试效果

Springboot模板整合(二)整合自定义属性和自定义配置文件

自定义配置文件

在application.properties同级目录下创建一个test1.properties文件,文件内容如下

test.sex = 男
test.name =John

测试自定义配置文件

实体类

package com.example.springboot_template01.entity;

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

@PropertySource(value = "classpath:test1.properties",encoding = "utf-8")
@Component
@ConfigurationProperties(prefix = "test")
public class CustomConfig {
    private String sex;
    private String name;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

测试接口类

package com.example.springboot_template01.web;

import com.example.springboot_template01.entity.CustomConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 自定义配置文件测试接口
 */
@RestController
public class CustomerConfigTestController {
    @Autowired
    private CustomConfig customConfig;
    @RequestMapping("/configTest")
    public String resultConfigTest(){
        return customConfig.getName()+":"+customConfig.getSex();
    }
}

测试效果

Springboot模板整合(二)整合自定义属性和自定义配置文件