본문 바로가기

Spring22

HttpEntity, @RequestBody, @ResponseBody의 기능 (HTTP 메시지 컨버터) HttpEntity, @RequestBody, @ResponseBody의 기능 (HTTP 메시지 컨버터) @RequestParam과 @ModelAttribute는 요청 파라미터 즉, 쿼리 파라미터의 데이터를 조회하는데 사용되고, Http Message Body의 데이터는 조회할 수 없었다. (단, HTML Form에서 POST 요청은 제외) 그렇다면 Http Message Body의 데이터는 어떻게 조회할 수 있을까? 바로 예제를 통해 알아보자. 예제에서 다룰 데이터 포맷은 JSON 위주로 다룰 것이다. (제일 많이 사용하니까!) HttpEntity HttpEntity는 HTTP Message Body 데이터를 직접 조회할 수 있다. 또한 HTTP header와 body 정보를 편리하게 조회할 수 있다... 2022. 7. 21.
@RequestParam과 @ModelAttribute 기능 @RequestParam과 @ModelAttribute 기능 이번에는 Spring에서 제공하는 @RequestParam과 @ModelAttribute에 대해 알아보자! @RequestParam Spring에서 제공하는 @RequestParam을 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있다. 바로 예제를 살펴보자! 예제1 요청 url: http://localhost:8080/param1?name=mike&age=20 @Slf4j @RestController public class RequestParamEx { @GetMapping("/param1") public String param1( @RequestParam("name") String name, @RequestParam("age") int .. 2022. 7. 21.
MVC패턴에 대해 알아보자. (Spring MVC) MVC패턴에 대해 알아보자. (Spring MVC) 서블릿 에 대해서도 조금 알게되었으니 이제 MVC 패턴에 대해 알아보도록 하자! MVC 패턴 사용 이유 MVC 패턴을 적용 안한 JSP를 예를 들어보자. JSP 페이지 안에는 자바 코드가 들어갈 수 있다. 따라서 비즈니스 로직을 넣을 수 있고, Connection 객체를 이용한 DB 연동도 할 수 있다. 또한 JSP는 클라이언트에게 View를 렌더링하는 역할도 수행한다. 여기까지만 봐도 JSP는 너무나 많은 역할을 가지고 있다. 이렇게 JSP가 많은 역할을 하게 되면 나중에 유지보수에도 굉장히 힘들어진다. JSP 페이지 안에 비즈니스 로직과 DB 연동 코드 모두 들어가 있으면 일단 코드 라인수도 많을 것이고, 비즈니스 로직을 수정하는데 여러가지 코드가 .. 2022. 7. 17.
서블릿에 대해 알아보자. 서블릿에 대해 알아보자. 먼저 MVC 패턴을 알아보기 전에 서블릿이 무엇인지 간단하게 짚고 넘어가겠습니다. 서블릿 서블릿이란 무엇인지 희미하게만 알고있어서 stackoverflow에 검색을 해보았는데 역시나 좋은 글들이 많았다. (사실 이 글만 봐서는 이해하기 어려울수도..) 서블릿이란 단순히 특정 HTTP 요청에 대한 응답하는 클래스이다. 기본적으로 서블릿은 웹 애플리케이션에 사용된다. 즉, 서블릿은 동적인 웹페이지를 제공할 수 있도록 도와주는 자바 기반의 자바 웹 프로그래밍 기술이다. 만약에 웹 애플리케이션 서버를 직접 구현한다고 가정해보자. - HTTP 요청 메시지와 HTTP 응답 메시지를 잠깐 살펴보면. HTTP 요청 메시지 POST /save HTTP/1.1 Host: localhost:8080.. 2022. 7. 14.
생성자 주입을 권장하는 이유 생성자 주입을 권장하는 이유 스프링 강의를 보다보면 필드 주입이나 수정자 주입을 사용하기 보다는 생성자 주입 사용을 더 권장한다고 들었다. 그래서 개인 프로젝트 할 때 생성자 주입을 사용하고는 있는데 "왜 생성자 주입을 권장하는 걸까" 궁금증이 생겼다. 이 참에 다양한 의존관계 주입 방법 중에서도 굳이 생성자 주입을 권장하는 이유를 알아보자! 구조 수정자 주입 수정자 주입(Setter Injection)은 이름 그대로 setter 메서드를 사용하여 객체를 주입하는 의존관계 주입이다. 선택적이며 변경 가능성이 있는 의존관계에 사용한다. 선택적: UserService가 스프링 빈에 등록이 안되어도 선택적으로 사용할 수 있다. (이 때는 @Autowired(required = false 옵션을 주어야 한다.).. 2022. 7. 9.
SOLID (IoC, DI) SOLID SOLID란 로버트 마틴(클린코드의 저자)이 정의한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙이다. 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 적용할 수 있다. 위 설계대로 구현을 해보았다. 설계의 내용을 간략히 설명하면, 연주 서비스 클래스에서 기타의 종류를 하나 선택해서 연주를 생성하는 아주 간단한 설계이다. 패키지 구성은 위와 같이 구성하였고, 모든 소스코드는 github에서 확인할 수 있다. SRP (단일 책임 원칙) SRP는 Single Responsibility Principle 의 약자로, 한 클래스는 하나의 책임만 가져야 한다. OCP (개방-폐쇄 원칙) OCP는 Open/Closed Principle 의 약자로, 소프트웨어 요소는 확장에는 열려 있.. 2022. 4. 17.