보호되어 있는 글입니다.
의역/오역이 있을 수 있고 잘못된 부분이 다수 존재할 수 있습니다 요약 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..
1. DTO를 왜 사용하는지? DTO(Data Transfer Object)는 말 그대로 데이터를 전송하는 객체이다. 벨덩에서는 "They are flat data structures that contain no business logic." 이라고 정의해뒀다. 1. @RequestParam으로 데이터를 일일히 받을 필요 없이 객체 하나로 한꺼번에 받을 수 있다 2. Bean Validation, Contoller에서 검증 기능을 분리할 수 있다. 3. 엔티티 내부를 캡슐화 할 수 있다 (뜬금없는 곳에서 엔티티의 값이 변경되지 않도록 한다) 1. 넘겨줄 필요가 없는 데이터를 보내지 않을 수 있다. (화면에 꼭 필요한 데이터만 보내줄 수 있다) 2. 순환참조를 예방할 수 있다 3. 엔티티 내부를 캡슐화 할..