Spring boot優雅配置文件變量注入
參數說明
- @PropertySource: 配置掃描的文件地址
- @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;
@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
- Global Encoding --> UTF-8
- Project Encoding --> UTF-8
- 打鉤 Transparent native-to-ascii conversion
- 配置目錄(
resources
)加入到Path
中