Interface InitializingBean
-
org.springframework.beans.factory.InitializingBean
- void afterPropertiesSet() throws Exception;
-
BeanFactory设置了bean的所有属性后,该bean就需要立即做出反应:例如,执行自定义初始化,或者只是检查所有必需的属性是否都设置好了。
-
实现InitializingBean的另一种方法是指定自定义init方法,例如在XML bean定义中。有关所有bean生命周期方法的列表
afterPropertiesSet()
- 在设置了所有bean属性并满足BeanFactoryAware、applicationcontext ware等之后,由包含它的BeanFactory调用。
- 该方法允许bean实例在设置了所有bean属性之后执行总体配置的验证和最终的初始化。
使用场景
- 后端服务部署到容器后,每次启动都是新的运行环境,如果需要在服务运行前需要创建一些文件夹,可以考虑使用。即springbean初始化完成后准备工作
场景一:服务部署时,检查必要的文件目录是否存在
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 服务部署时,检查必要的文件目录是否存在
* 若不存在则创建目录
* Created by JQ.Wang on 2020/4/7.
*/
@Component
@Slf4j
public class FilePathConfig implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
List<String> filePaths = new ArrayList<>();
filePaths.add(FilePathConstant.SOURCE_FILE_PATH);
filePaths.add(FilePathConstant.TEMPLATE_FILE_PATH);
filePaths.add(FilePathConstant.UPLOAD_FILE_PATH);
filePaths.add(FilePathConstant.ZIP_FILE_PATH);
for(String filePath : filePaths){
File f = new File(filePath);
if (!f.exists()) {
f.mkdirs();
}
if(f.exists()){
log.info("创建文件路径{}已存在",filePath);
}
}
}
}