Spring 4

@RequestBody, @ModelAttribute 그리고 Argument Resolver

Spring을 공부하던 중 @ModelAttribute 와 @RequestBody 이 둘의 차이를 명확히 정리하지 못해 이렇게 해보고 저렇게 해보는 삽질 끝에 결국 깨닫게 되어 정리해두고자 한다. 기존 form data를 넘겨받아 유저의 회원가입을 진행하는 필자의 controller는 아래와 같았다. @RestController @RequestMapping("/user") @RequiredArgsConstructor public class UserController { private final UserService userService; @PostMapping("/signUp") public User signUp(@ModelAttribute @Validated UserSignUpRequest signUp..

Backend/Spring 2022.05.20

Singleton Pattern(싱글톤 패턴)

싱글톤 패턴이란 것을 Spring을 공부하면서 접했는데, 희미하게 머릿속에 떠다니는 것 같아 글로 정리하고자 한다. Singleton Pattern이란? 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴 어플리케이션이 시작될 때 어떤 클래스가 최초 1회만 메모리에 인스턴스를 생성하는 방식이다. 예제 기존 코드를 기반으로 한 Test 코드(spring X) @Test @DisplayName("Pure DI Container without Spring") void pureContainer() { AppConfig appConfig = new AppConfig(); // 호출 시마다 객체 생성됨. UserService userService1 = appConfig.userService(); User..

Dev 2022.05.10

Dependency Injection(의존성 주입 - DI)란?

NestJS 공부할 때부터 접하던 개념인데 이번에 Spring을 공부하면서 제대로 짚고 넘어가야겠단 생각이 들었다. Dependency Injection 만약 A 객체가 B 객체의 변화에 영향을 받는다면 A는 B를 의존한다고 한다. 예를 들면 아래와 같다. public class UserService { private final UserRepository users = new MemoryUserRepository(); ... } 위의 UserService는 MemoryUserRepository를 의존한다고 할 수 있다. MemoryUserRepository가 변한다면, 결국 UserService도 변화하게 되는 것이다. 소프트웨어 엔지니어링에서 의존성 주입이란 하나의 객체가 다른 객체의 의존성을 제공하는..

Dev 2022.05.07

Spring 프로젝트 실행 - with Intellij (from WSL)

이전 포스트에서 Spring 프로젝트를 생성하고 실행까지 해봤었는데, Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr Spring Boot를 공부하기 위해 알아보던 중 프로젝트를 쉽게 시작할 수 있게 도와주는 도구가 있다는 것을 알게 되었다. Spring Initializr https://start.spring.io/ spring에서 제공하는 웹 도구인데, 원하는 설. hou27.tistory.com 생각보다 환경설정하는 과정에서 간단하게 마무리되지 않아 구글링하며 해결한 문제를 잊지 않기 위해 추가로 포스트를 작성하려 한다. 위 사진처럼 Intellij 우측 상단의 환경설정이 추가되지..

Backend/Spring 2022.05.01