스프링부트 개발하다가 제일 멘탈 나가는 순간이 있습니다.
어제까지 잘 되던 서버가 갑자기 실행이 안될 때 입니다.
특히 이런 로그가 뜨면 당황하죠.
• APPLICATION FAILED TO START
• Port already in use
• BeanCreationException
• Could not resolve placeholder
하지만 대부분 원인은 정해져 있고, 아래 순서대로만 점검하면 10분 안에 해결되는 경우가 많습니다

Step 0. 가장 먼저 콘솔 로그 확인
Spring Boot 실행 실패는 “추측”하면 시간 버립니다.
무조건 콘솔 로그 마지막 20~30줄을 먼저 봐야 합니다.
📌 핵심 팁
로그는 항상 “아래(마지막 줄)”부터 읽어야 진짜 원인이 보입니다.
1. 포트 충돌(8080) 확인 (가장 흔한 원인)
Spring Boot 기본 포트는 8080 입니다.
다른 서버(톰캣, 다른 스프링부트, 도커 컨테이너 등)가 이미 사용 중이면 실행이 실패합니다.
✅ Windows 포트 점유 확인
netstat -ano | findstr 8080
PID 종료:
taskkill /F /PID 12345
✅ Linux/Mac 포트 점유 확인
lsof -i :8080
프로세스 종료:
kill -9 12345
2. 톰캣 실행 방식 확인(내장/외장)
Spring Boot는 기본이 내장 톰캣입니다.
그런데 실무에선 WAR 배포 때문에 외장 톰캣 방식이 섞이면서 오류가 많이 납니다.
✅ 체크 포인트
• packaging이 jar인지 war인지
• war 배포면 SpringBootServletInitializer 상속 여부
3. application.yml / properties 설정 오류
설정 문제는 “그날따라 갑자기 안됨”이 아니라
정확히 특정 설정이 깨져서 안됩니다.
자주 뜨는 에러:
• Could not resolve placeholder 'xxx'
• Failed to bind properties under 'spring.datasource'
체크리스트
• application.yml 들여쓰기 오류 없는지
• : 뒤에 띄어쓰기 있는지
• profile별 설정파일(dev/prd)이 맞는지
4. Profile(dev/prod) 문제
실무에서 매우 흔합니다.
예)
• 로컬은 dev
• 운영은 prd
• 근데 profile이 안 바뀌어서 운영 DB를 로컬에서 물어버림…
5. Gradle/Maven 빌드 문제
코드 수정 없었는데 실행이 안되면
의존성 깨짐 / 캐시 꼬임 확률이 높습니다.
Maven
mvn clean package -DskipTestsGradle
./gradlew clean build6. IDE 캐시 문제(STS / IntelliJ)
이건 진짜 빈번합니다.
✅ STS / Eclipse
• Project > Clean
• Maven > Update Project
• 서버(Tomcat) Clean
✅ IntelliJ
• File > Invalidate Caches / Restart
7. DB 연결 오류
Spring Boot는 시작할 때 DB 연결을 시도하기 때문에, DB가 죽어있어도 실행 실패합니다.
대표 로그:
• Connection refused
• Communications link failure
• Access denied
✅ 체크 포인트
• DB 서버 살아있는지
• 방화벽/포트 막혔는지
• URL/계정 정보 맞는지
✅ 결론: 실무 체크 순서 요약
스프링부트 실행이 안될 때는 아래 순서가 가장 효율적입니다.
1. 콘솔 로그 마지막 줄 확인
2. 포트 충돌(8080) 확인
3. yml/properties 설정 확인
4. profile(dev/prd) 확인
5. Gradle/Maven clean build
6. IDE 캐시 정리
7. DB 연결 확인