본문 바로가기

분류 전체보기52

@Valid 를 이용해 @RequestBody 객체 검증하기 Springboot를 이용해서 어노테이션을 이용한 validation을 하는 방법을 적으려 한다. RestController를 이용하여 @RequestBody 객체를 사용자로부터 가져올 때, 들어오는 값들을 검증할 수 있는 방법을 소개한다. Jakarata Bean Validation API Packages에 있는 javax.validation.constraints package에 있는 기본적인 검증 어노테이션을 이용한다. @Valid를 이용하면, service 단이 아닌 객체 안에서, 들어오는 값에 대해 검증을 할 수 있다. javax.validation.constraints 패키지를 보면 많은 어노테이션들이 존재한다. @Valid를 이용한 객체 검증 시 기본적으로 이 어노테이션을 이용한다. 사실 이름.. 2020. 4. 2.
GCP Cloud Storage + Springboot 연동하기 이번 외주를 맡은 내용이 Google Cloud Storage를 이용해서 file을 업로드, 다운로드하는 API 기능을 구현해서 이 내용을 정리하고자 한다. Cloud Storage를 다루는 방법으로 Google Cloud Console, Cloud SDK를 이용한 command인 gsutil 등이 있지만, Springboot를 이용하여, Cloud Storage의 버킷 및 객체를 Client library 레벨에서 다루는 방법을 살펴보자. 1. Cloud Storage란? Google Cloud에 객체를 저장하는 서비스이다. 이때 객체는 모든 형식의 파일을 의미하며, 버킷이라는 컨테이너에 객체를 저장한다. 모든 버킷은 프로젝트와 연결되어있으며, 프로젝트의 권한 지정을 통해 원하는 사용자가 storage.. 2020. 3. 1.
[effective java] item 18 : 상속보다는 컴포지션을 사용하라 1. 구체클래스 상속의 위험성 다른 패키지의 구체 클래스를 상속하는 일은 위험하다 (인터페이스 상속말고, 구현 상속에서) 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. - 상위 클래스에 따라 하위클래스의 동작에 문제가 생기기 때문 (상위클래스의 릴리즈가 이뤄진다면?) '자기사용' : 자신의 다른 부분을 사용 > 내부 구현 방식이므로 오픈 api가 아니라 다름 릴리즈 변경, 삭제가능 하위 클래스가 깨지기 쉬운 이유 ㄱ. 상위 클래스의 메서드를 재정의 하여 하위클래스의 로직을 방어한다 (HashSet addAll() 예제) 상위클래스의 메서드 동작을 다시 구현하는게 어렵다. 시간도 더든다. 오류나 성능을 떨어뜨릴 수 있다. 하위클래스에서 접근 불가한 private 클래스를 써야하면 구현이 불가능하다. ㄴ. .. 2020. 2. 26.
HashCode 2020 참가 후기 처음으로 PS 대회에 참가해봤다. DSC Korea 슬랙에서 팀원을 구한다는 얘기를 듣고 참가를 하게 됐는데! 하하 UTC 17:30이라니,, 한국시간으로 오전 2:30부터 6:30까지 였다. 그래서 팀원들끼리 코딩할 장소를 찾기 위해 에어비엔비도 잡고 두근두근 설레 하면서 기다렸다. 그렇지만 새벽 2:30부터 6:30이라니 너무 가혹해.. 동양도 배려해 주세요.. 2시가 되길 기다리면서 팀원들하고 쪽잠도 자고, 사진도 찍고, 코딩 시작!! 근데 문제가 너무 대단,, 이걸 정확하게 짜는 게 4시간 만에 가능한가? 싶었달까 언제까지 열려있을지는 모르겠지만 여기서 문제를 확인 할 수 있다. https://hashcodejudge.withgoogle.com/#/rounds/6313004828196864/sco.. 2020. 2. 23.