Spring Boot 自定义配置

152 阅读1分钟

1 起因

在项目开发过程中, 我们往往会用到一些自定义配置, 在这里简单总结下对应的方式和如何选择合适的方式

2 解决方案

2.1 方式

  • @Value
  • @ConfigurationProperties

2.2 @Value

这种方式适用于自定义配置数量很少, 或使用位置零散的时候, 方式很简单:

public class FileService {
    @Value("${project-url}")
    private String projectUrl;
}

2.3 @ConfigurationProperties

这种方式适用于同一功能下的有多个配置信息, 笔者更倾向于这种:

@Data
@Component
@ConfigurationProperties("file")
public class FileConfigurationprivate String tempPath;  
    private String projectFilePath;  
    private String projectUrl;  
    private List<String> projectFileType;
}

使用这种方式时, idea的警告波浪线是笔者最讨厌的, 我们可以在maven中加入一个类库来去除:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

加入后需要重新编译下项目才能生效

2.4 静态配置

在统一开发工具类(如上传文件)的过程中, 我们的方法一般为静态的, 上述两种方法并不支持, 笔者选择下面的方式:

@Data
@AllArgsConstructor
@Component
public class FileUploadUtil {
    // 要用的静态变量
    private static String tempPath;
    private final FileConfiguration configuration;
    
    /** 
    * 初始化加载, 将配置变量装载到静态变量 
    */
    @PostConstruct
    public void init() {  
        tempPath = configuration.getTempPath();
    }
}