업무를 진행하면서 다양한 배포 환경에서 설정 파일을 다르게 적용해야 하는 경우가 생깁니다. 저희 프로젝트 같은 경우 스프링 실행 시점에 설정 파일을 환경별로 분리할 수 없다는 얘기를 들어서 빌드 파일을 생성할 때부터 프로파일을 지정하는 방법을 선택하였고 해당 과정을 기록하고자 합니다.Spring ProfileSpring Profile 은 런타임 시 지정한 profile 값에 따라 설정 파일을 로드할 수 있습니다. SpringBoot 에서는 기본적으로 실행 시 resources 폴더에서 application.properties(yml)을 찾아 로드합니다.그 다음으로 profile 값이 있다면 application-${profile}.properties(yml) 파일을 찾아 로드합니다.설정 파일 내부의 설정..
업무 중 특정 도메인 객체가 생성되거나 변경되었을 때 이메일 또는 푸시를 전송해야 한다는 요구사항이 생겼고 각 도메인 간 결합을 낮추고 여러 도메인에서 사용할 수 있도록 하기 위해 이벤트 방식을 적용하기로 하였습니다. 이벤트 방식을 적용하면서 알게된 내용들을 간단히 정리하고자 합니다. 🙂 1. 스프링 이벤트 [스프링에서 이벤트 발행과 구독] 스프링은 이벤트를 발행하고 구독하는 기능을 제공하고 있는데, 각 로직들을 느슨하게 결합하여 변경 및 추가를 용이하게 하고 재사용성을 높이기 위해 사용합니다. 스프링에서 이벤트를 사용하는 방식은 이벤트를 ApplicationContext로 넘기고 Listener가 이를 구독하는 방식입니다. 따라서 애플리케이션 및 컨텍스트의 수명 주기에 연결되는 사용자 지정 작업을 수행..
에러 메시지 처리를 공통으로 관리하고 필요에 따라 국제화까지 적용할 수 있도록 애플리케이션 개발을 진행한 경험을 바탕으로 해당 내용을 정리해보도록 하겠습니다. 먼저 SpringBoot에서는 메시지 처리 및 국제화를 위해 자동으로 MessageSource 객체를 빈으로 등록하게 됩니다. 따라서 기본적인 설정을 사용한다면 별도의 의존성 추가나 빈 등록을 할 필요가 없고 resources 디렉토리 하위에 messages.properties 파일만 만들어서 사용하면 됩니다. 기본적인 basename이 messages 이기 때문입니다. 그외 추가적인 설정을 하고 싶다면 역시나 별도의 의존성 추가나 빈 등록을 하지 않고 application.yml 파일에 다음과 같이 커스텀한 설정 정보를 추가해주면 됩니다. spr..
기존에 JSON을 객체로 변경하면서 custom 하게 deserialize/serialize 할 일이 있어서 Object Mapper를 빈 등록하여 사용하였습니다. 이렇게 작성을 하고 나니 Object Mapper가 어떻게 동작하는지 꼼꼼하게 알 필요가 있을 것 같아 해당 내용을 정리하려고 합니다. Object Mapper 란? JSON 컨텐츠를 Java 객체로 deserialization 하거나 Java 객체를 JSON으로 serialization 할 때 사용하는 Jackson 라이브러리의 클래스입니다. Jackson 라이브러리는 다음과 같이 의존성 추가할 수 있습니다. com.fasterxml.jackson.core jackson-databind 2.9.4 Java 객체를 JSON으로 serializ..
백엔드 서비스를 개발하면서 LocalDateTime, LocalDate와 같은 타입을 통해 날짜 처리를 하고 해당 데이터를 Request, Response로 전달해야할 일이 있었습니다. 이때 타입 변환을 어떻게 하면 좋을지에 대해 고민한 내용을 정리해보려고 합니다. 또한 이후 클라이언트와의 논의에서 타임존을 처리한 방식까지 같이 정리해볼까 합니다. 먼저 상황은 다음과 같습니다. 클라이언트에서는 요청, 응답 시 데이터 형태는 ```yyyy-MM-dd HH:mm:ss``` 포맷의 string으로 전달합니다. 서버의 Request, Response 모델에서는 해당 데이터를 LocalDateTime 타입으로 전달받습니다. 이때 별도 설정을 하지 않는 경우에는 JSON parse error: Cannot dese..
- Total
- Today
- Yesterday
- 수학
- string
- cloudfront
- map
- CodePipeline
- 조합
- array
- spring
- CodeDeploy
- BFS
- 소수
- DFS
- permutation
- 에라토스테네스의 체
- CodeCommit
- Combination
- ECR
- Baekjoon
- EC2
- Algorithm
- Dynamic Programming
- 프로그래머스
- 순열
- search
- ionic
- sort
- programmers
- AWS
- SWIFT
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |