본문 바로가기

분류 전체보기

(53)
[질문-시리즈] 생성자? 정적 팩토리 메서드? 빌더? [질문 시리즈]는 주변 개발자 분들께 제가 생각하는 내용을 질문 후 답변받은 내용입니다. 답변엔 여러 사람들의 관점을 바탕으로 최대한 정리하여 작성하였습니다. 해당 포스팅은 질문에 대한 정답을 명확히 하는 것이 목표가 아닙니다. 프로젝트를 바라보는 관점에 따라 의견이 다양해질 수 있고, 이 글 또한 그중 하나의 관점 정도로 생각하고 읽어주세요. 질문 다들 뭐 사용해? 참여한 프로젝트에서 new 키워드, 정적 팩토리 메서드, 빌더 패턴 등 다양한 방법을 활용하여 인스턴스를 생성하는 것을 보았습니다. 곰곰이 지켜보다 문뜩 이런 질문이 떠올랐습니다. 왜 여러가지 방법을 사용해서 인스턴스를 생성하는 거야? 자문자답을 해보려 하니 마땅히 떠오르는 것은 어… 그냥 편해서? 였습니다. 고민을 해본 적이 없었고 스스로..
[질문-시리즈] 테스트 코드 작성에 대한 피로도가 심해요 [질문 시리즈]는 주변 개발자 분들께 제가 생각하는 내용을 질문 후 답변들을 정리한 내용입니다. 해당 포스팅은 질문에 대한 정답을 명확히 하는 것이 목표가 아닙니다. 프로젝트를 바라보는 관점에 따라 의견이 다양해질 수 있고, 이 글 또한 여러 관점 중 하나일 뿐이라 생각합니다. :D 질문 요구사항을 왜 바꿔! 돌려줘! 프로젝트를 진행하다 보면 기존 코드를 기반으로 테스트 코드를 작성해야 하는 경우가 있고, 처음부터 테스트 코드 기반 개발을 진행할 수도 있습니다. 저 같은 경우 틀이 정해지지 않은 후자의 방법으로 프로젝트를 시작하였습니다. 처음 테스트 코드를 작성할 때는 어떤 범주의 테스트 코드를 작성할지 상의 후 개발을 진행했습니다. 어떤 값을 넘겨주는지 테스트 대상 메서드 내부에서 특정 메서드를 호출되..
[Spring Boot]Response Handling 하기-Flux [관련 포스트] [Spring Boot]Exception Handling 하기 [Spring Boot]Response Handling 하기-MVC [활용 목적] Flux 환경에서 Api 요청 결과에 대해 특정 포맷으로 변경하고 싶은 경우 [Dependencies] dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-webflux' // 별도의 모듈로 만들고 stater-webflux까지 필요하진 않는 경우 // implementation group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1' // implementation 'org.springfra..
[Spring Boot]Response Handling 하기-MVC Api 요청 결과를 제어하는 방법이 작성한 포스팅입니다. [참고 자료] - [Spring Boot] zkdlu/zkdlu/api-response-spring-boot-starter [관련 포스트] [Spring Boot]Exception Handling 하기 [Spring Boot]Response Handling 하기-Flux [활용 목적] Api 요청 결과에 대해 특정 포맷으로 변경하고 싶은 경우 [Dependencies] dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' ... } 구현 ServletResponseAdvice.jav..
[Spring Boot]Exception Handling 하기 동작 과정에서 발생하는 Exception을 제어하는 방법을 작성한 포스팅입니다. [관련 포스트] [Spring Boot]Response Handling 하기-MVC [Spring Boot]Response Handling 하기-Flux [활용 목적] 예외 처리된 결과를 특정 포맷으로 변경하여 제공하고 싶은 경우 Exception 별로 별도의 동작(로그, 추가 행동)을 작성하려는 경우 [Dependencies] dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' // 별도의 모듈로 만들고 프로젝트가 MVC인지 Flux 인지 모를 경우 // implementation group: 'javax.servlet', ..
[Spring Boot] Feign Client 로그 미동작 해결 Feign Client의 logLevel을 FULL로 설정하면 통신과정에서 주고받는 정보 등을 모두 log로 확인할 수 있습니다. 하지만 jar로 빌드 후 서비스를 배포하면 log가 보이지 않게 됩니다. 해당 현상에 대해 원인 파악 후 알게 된 해결방법을 작성합니다. 문제 Jar File로 배포 후 서비스 동작 시 Feign Client의 log가 확인되지 않는다. 원인 Feign Client를 만드는 과정에서부터 시작됩니다. @Configuration public class VCAClientConfig { @Bean public VCAClient vcaClient(@Autowired ObjectMapper objectMapper, @Value("${client.vca.url}") String url) ..
[Spring Boot] Gradle을 사용하여 편하게 배포하자! 서버 배포 시 매번 수정된 properties 파일과 jar 파일을 여러 번의 명령어를 통해 이동시키는 것이 번거로워 해결했던 방법을 작성하였습니다. * 현재 dockerfile을 통한 배포 및 업데이트를 진행하고 있으므로 추후 내용을 포함하도록 하겠습니다. 우선 제가 진행했던 프로젝트에서 배포할 내용은 다음과 같습니다. application.yml & properties 파일 jar 파일 외부 서버 호출 전용 lib 폴더 암호화 및 인증에 필요한 cert 폴더 목표는 build -> 생성된 파일 run 디렉토리로 이동입니다. 구성 build.gradle에 내용 추가 doLast는 task의 동작 끝에 추가 동작을 설정하는 함수입니다. ext { rootProjectName = getRootProject..
[SpringBoot] 외부 Properties File 사용하기 서버 구성에 필요한 속성을. properties 또는. yml 파일에 작성합니다. 저 같은 경우가 때 src/main/resources 경로에 위치한 application.properties에 작성하는 편인데 서버 배포 과정 중 문제가 있었습니다. 서비스 초기 배포다 보니 스케줄링 설정, 암호화 파일의 경로나 확장 파일의 경로가 추가되는 등 properties가 자주 변경하는 일이 발생하였고, 변경된 properties를 적용하기 위해 반복적으로 서버의 build가 발생하는 상황이었습니다. properties가 변경되었다고 해서 서버의 build가 발생해야 하는 것은 비효율적이라 생각하여 다른 방법을 찾기로 하였습니다. Property 읽는 과정 Property를 바인딩하는 다양한 방법이 존재하듯이 바인..