나만의 개발 로그 | 고민 로그
23.01.18 TIL 본문
☑️프로퍼티 주입 – @Value 한 줄 vs @ConfigurationProperties 대량 주입
1-1. 소규모 설정에는 @Value @Value("${upload.image.location}") private String location;
- SpEL(표현식)도 함께 사용할 수 있으므로 간단한 계산식이나 삼항 연산 도 가능.
- 단점: 프로퍼티가 많아지면 하드코딩 문자열이 늘어나고 IDE 리팩터링이 어렵다.
1-2. 대량 설정은 @ConfigurationProperties (권장)
@ConfigurationProperties(prefix = "upload.image")
public record ImageProperties(Path location, long maxSizeMb, List<String> allowedExt) {}
@EnableConfigurationProperties(ImageProperties.class) 또는
@SpringBootApplication 위에 @ConfigurationPropertiesScan 만 붙이면 끝.
☑️ @PostConstruct — 언제 필요한가?
| 라이프 사이클 | 메소드 |
| ① Bean 인스턴스 생성 | 생성자 |
| ② 의존성 주입 완료 | |
| ③ 후처리 | @PostConstruct ← 여기! |
| ④ 컨테이너 종료 직전 | @PreDestroy |
☑️ IOException
| 계층 대표 | 예외 | 언제 발생? |
| IOException (Checked) | – | 스트림·파일·소켓 등 모든 I/O 실패의 최상위 |
| └ FileNotFoundException | 파일 경로가 없거나 권한 없음 | |
| └ EOFException | 예상보다 먼저 스트림이 종료 | |
| └ SocketTimeoutException | 네트워크 응답 지연 |
☑️ 민감 정보 안전하게 숨기기
- 파일 분리
-
# application-secret.properties jwt.secret=${JWT_SECRET}
- properties
- profile include
-
properties# application.properties spring.profiles.include=secret
- .gitignore
-
gitignore*secret.properties
- CI / 운영 환경 변수 주입코드와 저장소에는 절대 비밀 키를 남기지 않는다.
-
bashjava -DJWT_SECRET="$CI_SECRET" -jar app.jar
'TIL&WIL' 카테고리의 다른 글
| 23.02.01 TIL (1) | 2023.02.02 |
|---|---|
| 23.01.31 TIL (0) | 2023.02.01 |
| 23.01.30 TIL (2) | 2023.01.31 |
| 23.01.26 TIL (0) | 2023.01.26 |
| 23.01.14 TIL (1) | 2023.01.14 |
Comments