SpringBoot启动初始化资源

背景

SpringBoot 配置的时候,针对于文件上传,有个 location 属性,主要是设置一个文件的临时目录,但是他没不能自动创建该目录,而且必须存在,不然则会报错;一开始在 @ComponentScan 扫描的时候,创建一个针对文件目录 config,从而达到效果;后面发现有个专门针对启动时初始化资源的接口

1
2
3
4
5
6
7
8
# 文件上传配置
#http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties
#search multipart
#spring.servlet.multipart.enabled=true #默认支持文件上传.
#spring.servlet.multipart.file-size-threshold=0 #支持文件写入磁盘.
#spring.servlet.multipart.location= # 上传文件的临时目录
#spring.servlet.multipart.max-file-size=1Mb # 最大支持文件大小
#spring.servlet.multipart.max-request-size=10Mb # 最大支持请求大小
1
2
3
4
5
# 文件上传目录
file:
directory:
upload: ${user.home}/yxd/crm/test/fileUploadDir
temp: ${user.home}/yxd/crm/test/fileTempDir
神奇 CommandLineRunner

CommandLineRunner 接口的 Component 会在所有 Spring Beans都初始化之后,SpringApplication.run()之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* @Description: 文件目录初始化
* @author: <a href="smniuhe@gmail.com"/>smniuhe</a>
*/
@Log4j2
@Component
public class FileDirInitRunner implements CommandLineRunner {

@Autowired
private FileProperties fileProperties;

@Override
public void run(String... args) throws Exception {

String temp = fileProperties.getTemp();
File fileTempDir = new File(temp);
FileUtils.forceMkdir(fileTempDir);
log.info("文件临时目录初始化:{},", fileTempDir);
}
}
参考
Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源