보호되어 있는 글입니다.
1. 기술 블로그를 맹신하지 말자. 2. AWS는 꼭 IAM을 이용해서 혹시나 키가 유출되더라도 피해를 최소화 할 수 있도록 하자 3. 앞으로 기술 블로그 포스팅 할 때 잘못된 정보가 없는지 꼭 확인하자.. 개발을 하면서 에러가 터지거나 모르는게 생기면 구글에 검색을 하게 된다. Github actions와 Docker를 이용해 스프링 애플리케이션을 배포하는 과정에서 애플리케이션에서 DB의 ID/PW나 AWS 키와 같은 민감 정보를 깃허브에 올릴 수 없기 때문에 이를 어떻게 깔끔하게 처리할 수 있을까에 대해 검색을 하던 중이었다. 환경변수를 이용하거나 Docker secret을 이용하는 방법 두 가지가 제일 많이 보였다. 그런데 우연히 들어간 어떤 블로그에서 굉장히 좋아보이는 방법을 제..
의역/오역이 있을 수 있고 잘못된 부분이 다수 존재할 수 있습니다 요약 1. JSON을 파싱함 2. 기본 생성자를 이용해 반환할 객체(Object)를 생성한다 3. 키값을 기준으로 반복문을 돈다 3-1. 객체에서 getter 또는 setter를 통해 얻은 프로퍼티들 중 키값의 이름이랑 같은거를 찾음 3-2. 리플렉션을 이용해 빈 객체에 값을 채워넣는다 3-3. 반복 4. 결과(Object) 리턴 # Jackson - the Java Json Library / the best JSON parser for Java - 스프링 부트에서 기본적으로 내장하고 있음 # ObjectMapper - com.fasterxml.jackson.databind - POJO JSON 변환하는 역할 수행 MyValue value..
의역/오역이 있을 수 있고 잘못된 부분이 존재할 수 있습니다 요약 1. @RequestBody는 HttpMessageConverter가 HTTP Request Body 내의 데이터를 객체로 변환(역직렬화)하도록 시키는 애노테이션이다. 2. @Valid를 붙이면 검증을 할 수 있고, 실패 시 MethodArgumentNotValidException을 던진다. 3. application/json 타입의 경우 MappingJackson2HttpMessageConverter가 데이터를 객체로 역직렬화 해준다. 4. MappingJackson2HttpMessageConverter는 ObjectMapper를 사용하는데, 프로퍼티를 이용하기 때문에 getter / setter 둘 중 하나만 있으면 된다 @Reques..
의역/오역이 있을 수 있고 잘못된 부분이 존재할 수 있습니다 핵심 요약 1. @ModelAttribute는 "가장 적절한" 생성자를 찾아 객체를 생성 및 초기화한다 2. 객체 생성 및 초기화 -> Data Binding -> Validation 순서로 진행된다 3. Data Binding은 getter / setter가 존재하는 변수에 한해서 이루어진다 @ModelAttribute - Annotation that binds a method parameter or method return value to a named model attribute, exposed to a web view. (메서드 파라미터를 Bind 해주거나, 웹 뷰에 노출되는 모델을 지정된 name 속성으로 담아 리턴해주는 애노테이션) ..
요약 401 Unauthorized -> @WithMockUser, @WithMockUserDetails 사용 403 Forbidden -> with(csrf()) 추가 @WebMvcTest Annotation that can be used for a Spring MVC test that focuses only on Spring MVC components. Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverte..
- AWS EC2 (Amazon Linux2 -> CentOS 기반) - Nginx -> 리버스 프록시 용도 - Let's Encrypt(Certbot) -> SSL 인증서 발급 용도 - SpringBoot 및 쉘 스크립트 0. 사전 개념 정리! # 프록시, 리버스 프록시란? "프록시 = 중개" 해주는 역할로 이해하면 쉽다! - 사용자를 대신해 서버에 접근 해주는 역할 -> 보안, 성능, 안정성 향상 + 캐시 서버 역할 가능 -> 포워드 프록시와 리버스 프록시로 구분할 수 있다 - 내부 망에서 사용해서 외부 인터넷 망으로 연결하기 전에 걸러내는 역할 - 클라이언트가 특정 웹 사이트에 접근하는 것을 사전 차단하는 역할 (학교에서 유해사이트 차단 등... ㅋㅋ) - 포워드 프록시 서버의 IP를 대신 사용하는..
작은 게시판 프로젝트를 진행하고 있다. 그 중에서 소소하게 비밀글 기능을 추가해서 맞는 비밀번호를 입력했을 때만 게시글 조회가 가능하도록 하는 기능을 추가하려고 했는데, 내 처음 계획으로는 대충 게시글 엔티티에 비밀번호 컬럼 하나 추가하고 대충 비교만 하면 되겠지? 싶은 생각으로 한두시간 정도면 끝낼 수 있는 작업으로 생각했었는데,,, 생각보다 훨씬 더 어려웠던 작업이었기에 기록으로 남겨본다. 사실 1인 프로젝트라 백엔드 + 프론트엔드를 동시에 다 만지려다보니 까다로웠던 것 같다. 풀스택 개발자여 아주 중요하지 않은 부분은 빠르게 넘어가고 핵심 작업만 다룬다! 작업 1. 게시글 생성 시 비밀글 유무 선택 / 암호화 저장 @Getter @Builder @NoArgsConstructor(access = Ac..