Spring
-
Spring 스프링 MVC - 5, 기본 기능 - 응답Spring 2024. 4. 12. 00:06
스프링 MVC 기본 기능 - 응답 1. HTTP 응답 - 정적 리소스, 뷰 템플릿 응답 데이터는 이미 앞에서 일부 다룬 내용들이지만, 응답 부분에 초점을 맞추어서 정리해보자. 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다. 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 2. 정적 리소스 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static ..
-
Spring 스프링 MVC - 4, 기본 기능 - 요청Spring 2024. 4. 11. 23:25
스프링 MVC 기본 기능 - 요청 1. HTTP 요청 - 기본, 헤더 조회 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다. 이번 시간에는 HTTP 헤더 정보를 조회하는 방법을 알아보자. @Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") public String headers(HttpServletRequest request, HttpServletResponse response, HttpMethod httpMethod, Locale locale, @RequestHeader MultiValueMap headerMap, @RequestHeader("host") String host, @..
-
Spring 스프링 MVC - 3, 스프링 MVCSpring 2024. 4. 11. 10:47
스프링 MVC 1. 스프링 MVC의 구성 1. 프론트 컨트롤러 DispatcherServlet 2. 핸들러 매핑 HandlerMapping 3. 핸들러 어댑터 HandlerAdapter 4. 모델, 뷰 ModelAndView 5. 뷰 리졸버 ViewResolver 6. 뷰 View 2. DispatcherServlet 구조 살펴보기 org.springframework.web.servlet.DispatcherServlet 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다. 그리고 이 디스패처 서블릿이 바로 스프링 MVC의 핵심이다. 2 - 1. DispatcherServlet 서블릿 등록 Dispatcher..
-
Spring 스프링 MVC - 2, MVC 프레임워크Spring 2024. 4. 11. 10:47
MVC 프레임워크 1. MVC 패턴 - 한계 MVC 패턴을 적용한 덕분에 컨트롤러의 역할과 뷰를 렌더링 하는 역할을 명확하게 구분할 수 있다. 특히 뷰는 화면을 그리는 역할에 충실한 덕분에, 코드가 깔끔하고 직관적이다. 단순하게 모델에서 필요한 데이터를 꺼내고, 화면을 만들면 된다. 그런데 컨트롤러는 딱 봐도 중복이 많고, 필요하지 않는 코드들도 많이 보인다. 실제 MVC 패턴의 코드를 전부 가져오면 너무 길어지므로 설명만 하고, 설명에 해당하는 일부 코드만 가져오겠다. 2. MVC 컨트롤러의 단점 2 - 1. 포워드 중복 View로 이동하는 코드가 항상 중복 호출되어야 한다. 물론 이 부분을 메서드로 공통화해도 되지만, 해당 메서드도 항상 직접 호출해야 한다. RequestDispatcher dispa..
-
Spring 스프링 MVC - 1, MVC 패턴의 등장 배경Spring 2024. 4. 11. 10:46
MVC 패턴의 등장 배경 MVC 패턴에 대해 알기 위해서는 먼저 JSP와 Servlet을 알아야 한다. 1. 서블릿(Servlet) request/response 기반의 자바 서버 사이드 웹 애플리케이션 개발 기술 1 - 1. 서블릿 컨테이너 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함 • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리 • 서블릿 객체는 싱글톤으로 관리 • 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율 • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용 • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근 • 공유 변수 사용 주의 • 서블릿 컨테이너 종료시 함께 종료 • JSP도 서블릿으로 변환 되어서 사용 • 동시 ..
-
Spring 빈 스코프 - 2, 웹 스코프Spring 2024. 4. 11. 10:38
웹 스코프 빈 스코프 - 1에서 싱글톤과 프로토타입 스코프를 학습했다. 싱글톤은 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프이고, 프로토타입은 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 특별한 스코프이다. 이번에는 웹 스코프에 대해서 알아보자 1. 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 2. 웹 스코프 종류 request HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. session HTTP Session과 동일한 생명주기를 가지는 스코프 application 서블릿 컨텍스트( ..
-
Spring 빈 스코프 - 1, 프로토타입 스코프Spring 2024. 4. 9. 21:04
빈 스코프 - 1 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다. ..
-
Spring 빈 생명주기 콜백Spring 2024. 4. 9. 21:04
빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자. 실제로 네트워크에 연결하는 것은 아니고, 단순히 문자만 출력하도록 했다. 이 NetworkClient 는 애플리케이션 시작 시점에 connect() 를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다 public class NetworkClient { private String url; public NetworkClient() { System.ou..