layout: posttitle: "@ModelAttribute"date: 2022-01-13T00:00:00-00:00author: sangyeopcategories: Spring보통 요청 파라미터를 통해서 값을 받고, 그 값을 객체에 넣어주는 방식으로 데이터를
layout: posttitle: "도메인에서 Setter 사용을 지양하는 이유"date: 2022-02-10T00:00:00-00:00author: sangyeopcategories: Spring내가 이해한 방식으로 설명하자면 이렇다무분별하게 setter 메서드
layout: posttitle: "QNA 미션 코드 리뷰 정리 - @Transactional"date: 2022-05-04T00:00:00-00:00author: sangyeopcategories: Sproutt-2nd새싹 스터디에서 웹 미션을 진행하던 중 서비
layout: posttitle: "BeanFactory과 ApplicationContext의 차이점"date: 2022-05-10T00:00:00-00:00author: sangyeopcategories: Spring스프링이 제어권을 가져서 직접 생성하고 의존관
layout: posttitle: "HttpSession에서 세션이 만들어지는 시점"date: 2022-05-10T00:00:00-00:00author: sangyeopcategories: SpringUserController.classLoginAcceptance
클라이언트가 보내는 HTTP 요청 본문(Json, xml 등)을 Java 오브젝트로 변환한다. HTTP 요청 본문 데이터는 Spring에서 제공하는 HttpMessageConverter를 통해 타입에 맞는 객체로 변환된다.@RequestBody로 받는 DTO는 기본생성
클라이언트가 어떤 요청을 하였을때 그에 맞는 응답을 돌려주는 End-point를 Web을 통해 노출한 것을 의미한다.이러한 방법론 중 하나로 REST 라는 방식이 있다.아키텍처 스타일 중 하나이다. Rest는 Representational State Transfer 의
REST API를 설계, 빌드, 문서화 및 사용하는데 도움이되는 OpenAPI 스펙을 중심으로 구축이 된 오픈 소스 도구 세트이다.쉽게 잘하면 API 문서 작성을 자동화 해주는 툴이라고 이해해도 좋다. 기존에 사용하던 Spring Rest Docs 와는 달리 Swagg
데이터 모델을 2차원 테이블(표) 형태로 표현하는 데이터베이스를 의미한다. 관계형 데이터베이스의 가장 큰 특징은 외래 키(FK)를 이용하여 테이블 간 Join이 가능하다는 것이 가장 큰 특징이다.User 테이블Order 테이블User와 Order가 관계를 맺고 있는 테
예를 들면 아래와 같다.위와 같이 createdUser 라는 하나의 문자열을 key로 이용하여 Servlet Container는 Http client와 Http server 간의 세션을 생성한다. A라는 유저가 세션 값을 저장한다고 하면 createdUser라는 문자열
form data 는 쿼리파라미터로 들어가는데 post 하면 url에 노출되어 안좋지 않을까?form data를 get 요청으로 보낼 경우url에 쿼리파라미터로 들어간다form data를 post 요청으로 보낸 경우바디에 쿼리파라미터가 들어간다multipart/form
@Controller 또는 @RestController 가 적용된 Bean들의 예외를 catch해서 하나의 메서드에서 예외를 처리해주는 기능을 제공한다. (@Service 또는 @Repository의 Bean의 예외는 처리X)@ExceptionHandler 어노테이션은
국제화(i18n)을 제공하는 인터페이스이다. 메세지 설정 파일들을 모아놓은 뒤, 접속한 국가 환경에 따라 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다.파일이름\_언어\_국가.properites 형식으로 메세지 파일을 추가해 설정 파일을 세팅할 수 있다.예시는 아래와
DDD(Domain-Driven Design), 도메인 주도 설계란 무엇일까?가장 먼저 도메인이란 무엇인지 알아보자.소프트웨어로 해결하고자 하는 문제 및 관심사쇼핑몰을 구현한다고 하면, 쇼핑몰 자체가 가장 큰 문제 영역인 도메인이 된다.그리고 쇼핑몰의 하위 도메인으로
먼저 아키텍처란 무엇일까? 위키피디아에서는 아래와 같이 정의하고 있다.소프트웨어 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙 - wikipedia쉽게 말하자면 소프트웨어를 설계하는 방법이며 지켜야 하는 원칙을 의미한다
Presentation -> Service -> Infra 의 방향으로 의존성이 설계된 MVC 아키텍처에서는 인프라의 변화가 곧 뷰의 변화로 이어지기 쉽다.그러나 웹 서비스의 핵심은 인프라가 아닌, 실제 비즈니스 로직이 수행되는 서비스 계층이며 더 정확하게는 개발팀의
서버의 성능이 나빠지는 이유로는 웹 서버의 부하도 그 원인이 될 수 있지만, DB의 부하가 원인일 가능성도 있다. 웹 서버에 걸리는 부하를 분산하는 기술로 로드 밸런싱이 있듯이, DB 서버를 이중화하여 부하를 분산하도록 하는 기술에는 클러스터링(Clustering)과
HTTP는 비연결성과 무상태성을 띄는 프로토콜이다. 이게 무슨 말인가? 먼저 비연결성이란, HTTP는 요청에 대한 응답을 처리한 후 바로 연결을 끊는것을 의미한다. 연결이 끊어졌기 때문에, 자연스레 이전 상태에 대한 정보와 현재 상태가 남아있지 않게 된다. 이를 무상태
Redis는 데이터 저장소로 디스크가 아닌 메모리를 사용하는 In-Memory DB이다.그렇다면 먼저 In-Memory DB가 무엇인지 알아보자.In-Memory DB는 말 그대로 데이터를 디스크가 아닌 메모리에 저장하는 데이터베이스이다. 메모리와 디스크 사이의 병목이
인프라를 구성할 때, subnet을 단순히 ip 대역을 묶어주는 용도로만 사용을 하고는 한다. 그러나 보안과 책임 분리를 위해서는 subnet을 각자의 용도에 맞게 구성해 줄 필요가 있다. 먼저 아래 직접 그린 인프라 구조를 보자. 구성 요소는 다음과 같다. Reg
Servlet은 비교적으로 low level의 기술이라고 볼 수 있다. 때문에 최근에는 이 Servlet만을 단독으로 이용해 구현하는 경우는 드물다. 그러나 자바의 대부분의 프레임워크들(Spring REST, Spring WebMVC 등..)은 Servlet 기반 위에