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 FileConfiguration {
private 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();
}
}