개발/GCP

[springboot + firebase admin storage + app engine] config 초기화 오류 해결

piece5 2024. 1. 13. 19:40

문제

로컬에서는 bean이 내가 생각한 대로 실행된다. 그래서 firebase 초기화를 한 부분이 실행 되고 firebase를 사용하는 service 부분이 다음으로 실행되기 때문에 에러가 나지 않는다.

 

그런데 App Engine에 배포를 하니 @PostConstructor 어노테이션을 붙인 firebase 초기화 코드가 먼저 실행되지 않고 service 부분이 먼저 실행돼서 계속 에러가 난다는 것을 알게 됐다.

 

해결

1. FirebaseConfig 클래스에 @Order(1) 어노테이션을 붙인다.

2. 그리고 그 다음으로 실행되는 클래스인 FirebaseStorageService 클래스에 @DependsOn("firebaseConfig")를 붙여서 FirebaseConfig에 의존한 클래스라는 것을 명시한다.

3. 그리고 그 다음으로 실행되는 클래스인 BoardService 클래스에 @DependsOn("firebaseStorageService")를 붙여서 FirebaseStorageService에 의존한 클래스라는 것을 명시한다.

 

*주의점은 @DependsOn(" ") 이곳에 들어가는 값이 클래스 명이 아니라 빈의 이름을 쓴다고 한다. 그렇기에 파스칼 케이스가 아닌 카멜 케이스로 쓴다.

 

위 처럼 작성하면 App Engine에서도 문제 없이 순서대로 실행되는 것 같다.