Spring 7

[Spring] spring JDBC

JDBC 는 자바의 데이터 액세스 기술의 기본이 되는 로우레벨의 API다. JDBC는 표준 인터페이스를 제공하고 개발자가 이 인터페이스를 구현한 드라이버를 제공하는 방식으로 사용된다. 그 덕분에 SQL의 호환성만 유지한다면 JDBC로 개발한 코드는 DB가 변경돼도 그대로 재사용할 수 있다는 장점이 있다. 그렇다면 단점은? 간단한 SQL을 하나 실행하는 데도 복잡한 코드가 필요하다. DB에 따라 일관성 없는 정보를 가진 채로 던져지는 예외 처리를 해야하며 SQL은 코드 내에서 문자로 제공해야 한다. 스프링 JDBC 기술과 동작 원리 - 스프링의 JDBC 접근 방법 1. SimpleJdbcTemplate -> 가장 많이 사용되는 기능을 통합하였다. 방대한 템플릿 메소드와 내장된 콜백을 제공하며 jdbc의 모..

Study/Spring 2021.10.04

[Spring] RestTemplate

[1] RestTemplate란 ? - org.springframework.http.client - Spring 3.0 부터 지원 - 스프링에서 http 통신에 쓸 수 있다. - HTTP 서버와 통신을 단순화하고 RESTful 원칙을 지킨다. 그 외 스프링의 REST 서비스 호출 방법 AsyncRestTemplate Spring 4부터 사용 가능한 비동기 RestTemplate WebClient Spring 5부터 사용 가능한 Non-Blocking, Single Thread 이며 동기&비동기 둘다 지원 RestTemplate를 많이 사용하고 있지만 최근 추세는 WebClient로 마이그레이션 중인 것 같다. [2] RestTemplate의 동작 - HttpClient는 Http를 사용하여 통신하는 범용..

Study/Spring 2021.09.23

[Spring] Handler Method(ResponseEntity)

ResponseEntity "개발자가 직접 데이터와 HTTP 상태 코드를 제어할 수 있는 클래스" 스프링에서는 HttpEntity라는 클래스가 있다. 이 클래스를 타고 들어가면 HttpHeader와 HttpBody를 포함하고 있는 것을 볼 수 있다. 그리고 이 HttpEntity를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. 그렇다면 나는 이 클래스들을 이용하여 좀 더 세밀하게 요청&응답 값을 작업할 수 있을 것이다. 간단한 예시를 들어보자. 컨트롤러는 전에 modelattribute를 공부할 때 썼던 메서드를 재활용하였다. 중간 값은 무시하고 값을 return 할 때, ResponseEntity에 dante 클래스와 http 상태 코드를 함께 담아서 보낸다..

Study/Spring 2021.09.12

[Spring] @ModelAttribute

@ModelAttribute Client가 전송하는 multipart/form-data 형태의 Http body와 Http 파라미터들을 Setter를 통해 객체에 1대 1 바인딩하는 역할이다. URI path, 요청 파라미터, 세션 등 다양한 곳에서 선언 가능하다. 바인딩 에러를 직접 다루고 싶은 경우 BindingResult 타입을 추가할 수 있으며, @Validate 어노테이션을 통해 매개변수에 대한 검증을 할 수 있다. 객체 먼저 Dante 객체를 선언하여 지역변수를 선언하고 Getter와 Setter를 작성한다. (여기서는 Getter, Setter는 생략) public class Dante { private String deadLift; private String squat; private St..

Study/Spring 2021.09.08

[Spring] Spring IoC Container 그리고 Bean

Spring IoC Container 이번에는 스프링의 특징이자 핵심인 Inversion of Control(IoC) 에 대해 공부하였다. IoC는 객체의 생성 / 삭제 / 관리 등 주기에 대해 관리를 한다. 내부적으로 조작할 객체를 외부로부터 주입받도록 하며 이때 외부로부터 주입받는 작업을 DI(dependency injection) 라고 한다. 개발자 대신 위 작업을 대신해주는 등 프로그램의 제어 흐름 구조가 뒤바뀐다고 하여 붙여진 이름이다. 그리고 이때 IoC에 관리되는 객체를 Bean 이라고 부른다. Bean은 IoC에 의해 인스턴스화, 조립 및 관리 된다. 컨테이너는 메타데이터를 읽어 인스턴스화, 구성 및 조립할 객체에 대한 정보를 가져오게 된다. Application 클래스는 메타데이터와 결합..

Study/Spring 2021.08.29

[Spring] Dispatcher Servlet

DispatcherServlet 에서 dispatcher란 "보내다, 급파하다" 라는 뜻을 가지고 있다. 디스패처 서블릿의 역할은 이처럼 Http 프로토콜 요청이 들어오는 가장 앞 단에서 컨트롤러에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 하는 Front Controller 이다. Spring Framework 의 유일한 프론트 컨트롤러인 DispatcherServlet 은 Spring MVC의 핵심 요소이다. 먼저 web.xml 쪽을 살펴보자. contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener ap..

Study/Spring 2021.08.24

[Spring] Request Mapping - httpMethod

@RequestMapping 어떠한 메소드를 지정하지 않으면 http의 모든 메소드를 허용한다. Http method 종류 GET, POST, PUT, DELETE, PATCH 등... GET 특정한 리소스 가져오도록 요청 오직 데이터를 받기만 함 캐싱 사용 가능 *멱등성(Idempotent) POST 리소스 생성 및 수정 요청 요청 바디에 데이터 포함 캐싱 사용 불가능 PUT 특정 리소스를 현재 메시지의 값으로 생성하거나 만약 존재한다면 기존 리소스 덮어쓰기 Post와의 차이 POST의 URI는 보내는 데이터를 처리할 리소스 PUT 의 URI는 보내는 데이터에 해당하는 리소스 -> PUT은 리소스의 위치를 알고 URI를 지정해야 한다. 멱등성(Idempotent) PATCH 리소스를 부분적으로 변경 D..

Study/Spring 2021.08.15