@Component
@Order(2)
public class SystemCheckRunner implements ApplicationRunner {
private final Environment env;
private final DataSource dataSource;
public SystemCheckRunner(Environment env, DataSource dataSource) {
this.env = env;
this.dataSource = dataSource;
}
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("🔍 开始系统检查...");
// 检查数据库连接
checkDatabaseConnection();
// 检查必要的文件路径
checkRequiredPaths();
// 检查环境变量
checkEnvironmentVariables();
// 检查命令行参数
if (args.containsOption("debug")) {
System.out.println("🐛 调试模式已启用");
}
System.out.println("✅ 系统检查完成!");
}
private void checkDatabaseConnection() {
try (Connection conn = dataSource.getConnection()) {
System.out.println("✅ 数据库连接正常");
} catch (SQLException e) {
System.err.println("❌ 数据库连接失败: " + e.getMessage());
throw new RuntimeException("数据库连接检查失败", e);
}
}
private void checkRequiredPaths() {
String uploadPath = env.getProperty("app.upload.path", "/tmp/uploads");
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
System.out.println("📁 创建上传目录: " + uploadPath);
} else {
System.out.println("✅ 上传目录存在: " + uploadPath);
}
}
private void checkEnvironmentVariables() {
String[] requiredVars = {"DB_HOST", "DB_PORT", "DB_NAME"};
for (String var : requiredVars) {
String value = env.getProperty(var);
if (value == null) {
System.err.println("⚠️ 缺少环境变量: " + var);
} else {
System.out.println("✅ 环境变量 " + var + " 已设置");
}
}
}
}