Spring boot优雅配置文件变量注入

Spring boot优雅配置文件变量注入

参数说明

  • @PropertySource: 配置扫描的文件地址
    • classpath: 默认为resource目录
  • @ConfigurationProperties: 批量注入配置字段
    • prefix 配置需要注入的配置参数前缀
    • ignoreUnknownFields 是否忽略未知字段
  • @Configuration 标记这个类让Spring扫描到

java代码

package com.smart.life.userserver.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @Author: WanG
 * @Date: 2020/6/11 16:59
 * @version: v1.0
 * @description: 系统常量配置
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@PropertySource("classpath:smart-life.properties")
@Configuration
@ConfigurationProperties(prefix = "my.constant",
		ignoreUnknownFields = false)
public class SmartLifeConstant {

	private PetClass pet;
	private User user;

	@Data
	public static class User {
		private String name;
		private String gender;

	}

	@Data
	public static class PetClass {
		private String name;
		private String gender;

	}
}

配置文件

smart-life.properties

my.constant.user.name=名字
my.constant.user.gender=性别
my.constant.pet.type=猫咪
my.constant.pet.gender=猫咪性别

效果展示

控制层代码示例

	@PostMapping("test")
	public ServerReturnResult test(){
		SmartLifeConstant bean = SpringUtils.getBean(SmartLifeConstant.class);
		log.info("用户-->name:{}({}), 宠物 --> name:{}({})",
				bean.getUser().getName(),
				bean.getUser().getGender(),
				bean.getPet().getName(),
				bean.getPet().getGender());
		return ServerReturnResult.success();
	}

控制台效果

中文乱码问题

IDEA

  1. Global Encoding --> UTF-8
  2. Project Encoding --> UTF-8
  3. 打钩 Transparent native-to-ascii conversion
  4. 配置目录(resources)加入到Path
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章