프로그램의 흐름(객체의 생명주기)을 개발자가 직접 제어하는 것이 아닌, 외부에서 관리하는 것을 말한다.스프링은 제어의 역전을 지원하여, 개발자 대신 스프링 컨테이너가 객체(Bean)들을 관리해준다.스프링 컨테이너는 Bean들의 생명주기를 관리하며, 필요에 따라 객체 간
수동 빈 등록은 자바 코드의 @Bean이나 XML의 <bean> 등을 통해서 등록할 스프링 빈을 직접 설정 정보에 적어주는 방식이다. @Configuration이 달린 클래스는 빈 설정을 담당하는 설정 정보 클래스가 된다.스프링 컨테이너는 @Configuratio
데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 후에야 필요
1\. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.2\. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.3\. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다.4\. 핸들러 실행: 핸들러 어댑터가 실제 핸
@Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 따라서 해당 이름의 뷰를 찾고 뷰가 랜더링 된다.반면 @RestController는 반환 값으로 뷰를 찾는 것이 아니라, 반환 값을 HTTP 메시지 바디에 바로 입력한다.예를 들어 @Request
HTTP 응답 데이터를 만드는 방법으로 다음 3가지 방법이 있다. 1\. 정적 리소스ex, 웹 브라우저에 정적인 HTML, css, js를 제공할 때, 정적 리소스를 사용한다.2\. 뷰 템플릿 사용ex, 웹 브라우저에 동적인 HTML을 제공할 때, 뷰 템플릿을 사용한다
뷰 템플릿에서 HTML을 생성해서 응답하는 것이 아니라 HTTP API처럼 HTTP 요청 메시지를 직접 메시지 바디에서 읽거나, HTTP 응답 메시지를 메시지 바디에 담아 응답하는 경우 HTTP 메시지 컨버터를 사용하면 편리하다.스프링 MVC는 다음의 경우에 HTTP
클라이언트와 서버는 stateless인 HTTP 통신을 주고 받지만, 로그인과 같이 접속했던 정보를 저장한 상태를 유지해야 하는 경우가 있다. 서버에서 쿠키를 생성해 클라이언트에게 전달하면, 클라이언트 측에서 쿠키를 저장해두고, 그 이후로 서버로 요청을 보낼 때마다 쿠
1. 필터 공통 관심 사항 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다고 가정해보자. 이때 로그인을 하지 않은 사용자는 상품 관리 페이지의 url을 직접 호출하는 경우에도 상품 관리 페이지로 들어갈 수 없어야 한다. 컨트롤러에서 로그인 여부를 체크하
스프링이 아닌 순수 서블릿 컨테이너의 예외 처리 방식에 대해 알아보자. 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다.Exception 자바의 main 메소드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행된다. 실행 도중에 발생한 예외를 잡지 못하고 처
HTTP를 기반으로 동작한다.정적 리소스를 제공한다. (HTML, CSS, JS, 이미지, 영상 등)HTTP를 기반으로 동작한다.웹 서버의 기능(정적 리소스 제공)을 포함하며, 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있다. (동적 HTML, HTTP A
외부 오픈 API를 활용해서 날씨 정보를 받아오는 경우와 같이 외부의 다른 서비스 기능을 활용하기 위해 HTTP 요청을 보내는 경우, 이를 HTTP Client라 한다. RestTemplate은 스프링 3.0부터 도입된 클래스로, 동기적인 HTTP 통신을 위해 사용된다