Spring 17

Spring Boot AutoConfiguration 자동 설정, 원리

Spring Boot AutoConfiguration 자동 설정, 원리 Spring Boot는 Spring과 마찬가지로 component-scan을 통해서 component들을 찾아서 bean을 생성한다. 이 과정으로 설정한 bean들(@Repository, @Service, @Controller, @RestController, @Configuration에 등록한 @Bean과 같은 설정들)이 생성된다 Spring Boot에서 미리 작성된 autoconfiguration에 의해 추가적인 bean들도 같이 생성된다. @SpringBootApplication @SpringBootApplication public class Application { public static void main(String[] ar..

Spring/Spring Boot 2021.01.03

[Spring] HTTP 요청 맵핑 - 커스텀 애노테이션

Custom Annotation 직접 커스터마이징 하는것이 커스텀 애노테이션이다. @RequestMapping 애노테이션을 메타 애노테이션으로 사용하기 @GetMapping 같은 커스텀한 애노테이션을 만들 수 있다. 메타(Meta) 애노테이션 애노테이션에 사용할 수 있는 애노테이션 스프링이 제공하는 대부분의 애노테이션은 메타 애노테이션으로 사용할 수 있다. 조합(Composed) 애노테이션 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션 코드를 간결하게 줄일 수 있다. 보다 구체적인 의미를 부여할 수 있다. @Retention 해당 애노테이션 정보를 언제까지 유지할 것인지. Source: 소스 코드까지만 유지. 즉, 컴파일 하면 해당 애노테이션 정보는 사라진다는 이야기이다 Class: 컴파인 ..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - HEAD와 OPTIONS

HEAD와 OPTIONS 우리가 구현하지 않아도 스프링 웹 MVC에서 자동으로 처리하는 HTTP Method HEAD OPTIONS HEAD GET 요청과 동일하지만 응답 본문을 받아오지 않고 응답 헤더만 받아온다. (테스트 하기 위함) 예시 @Controller public class SampleController { @GetMapping( value = "/hello", params = "name=sungjun" ) @ResponseBody public String hello() { return "hello"; } } @WebMvcTest public class SampleControllerTest { @Autowired MockMvc mockMvc; @Test public void helloTest..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 헤더와 매개변수

헤더와 매개변수 특정한 헤더가 있는 요청을 처리하고 싶은 경우 @RequestMapping(headers = “key”) @Controller public class SampleController { @GetMapping( value = "/hello", headers = HttpHeaders.AUTHORIZATION ) @ResponseBody public String hello() { return "hello"; } } @WebMvcTest public class SampleControllerTest { @Autowired MockMvc mockMvc; @Test public void helloTest() throws Exception { mockMvc.perform(get("/hello") .hea..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 미디어 타입

미디어 타입 맵핑 특정한 타입의 데이터를 담고 있는 요청만 처리하는 핸들러 @RequestMapping(consumes=MediaType.APPLICATION_JSON_UTF8_VALUE) Content-Type 헤더로 필터링 매치 되는 않는 경우에 415 Unsupported Media Type 응답 특정한 타입의 응답을 만드는 핸들러 @RequestMapping(produces=”application/json”) Accept 헤더로 필터링 (하지만 살짝... 오묘함) 매치 되지 않는 경우에 406 Not Acceptable 응답 문자열을 입력하는 대신 MediaType을 사용하면 상수를 (IDE에서) 자동 완성으로 사용할 수 있다. 클래스에 선언한 @RequestMapping에 사용한 것과 조합이 되..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - URI 패턴 맵핑

URL(Uniform Resource Locator 또는 web address, 문화어: 파일식별자, 유일자원지시기) 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다. 즉, 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조이다. 쉽게 말해서, 웹 페이지를 찾기위한 주소를 말한다. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다. URI Uniform Resource Identifier. resource의 식별자이다. 리소스의 식별은 리소스의 위치를 표시하거나 unique한 이름으로 접근할..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 요청 메소드

HTTP Method GET, POST, PUT, PATCH, DELETE, ... GET 요청 클라이언트가 서버의 리소스를 요청할 때 사용한다. 캐싱 할 수 있다. (조건적인 GET으로 바뀔 수 있다.) 브라우저 기록에 남는다. 북마크 할 수 있다. 민감한 데이터를 보낼 때 사용하지 말 것. (URL에 다 보이니까) idempotent(멱등) Controller import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public ..

Spring/Spring MVC 2020.11.15

[Spring] Spring IoC Container 연동

Spring IoC Container 연동 Servlet Application 에 Spring 연동하기 서블릿에서 스프링이 제공하는 IoC 컨테이너 활용하는 방법 스프링이 제공하는 서블릿 구현체 DispatcherServlet 사용하기 IoC 컨테이너 활용하는 예제 의존성 추가 org.springframework spring-webmvc 5.1.3.RELEASE web.xml 수정 기존 listener 제거후 아래 추가 org.springframework.web.context.ContextLoaderListener AppConfig 생성 import org.springframework.context.annotation.ComponentScan; import org.springframework.contex..

Spring/Spring MVC 2020.11.07

[Spring] Servlet listener, filter

Servlet listener,filter Servlet listiener 웹 애플리케이션에서 발생하는 주요 이벤트를 감지하고 각 이벤트에 특별한 작업이 필요한 경우에 사용할 수 있다. 서블릿 컨텍스트 수준의 이벤트 컨텍스트 라이프사이클 이벤트 컨텍스트 애트리뷰트 변경 이벤트 세션 수준의 이벤트 세션 라이프사이클 이벤트 세션 애트리뷰트 변경 이벤트 Servlet filter 어떠한 요청이 들어왔을때 servlet으로 보내고, 또 서블릿이 작성한 응답을 클라이언트로 보내기 전에 특별한 처리가 필요한 경우에 사용할 수 있다. 체인 형태의 구조 Servlet Listener는 Servlet Container 영역 위에있다 Servlet Container에서 바로 Servlet에 가는 것이 아니라 Filter를..

Spring/Spring MVC 2020.11.06

[Spring] Servlet 서블릿

Servlet HTTP 통신 기반의 클래스를 살펴보면 어노테이션 기반, 매개변수나 서블릿 클래스가 활용된다 자바 엔터프라이즈 에디션은 웹 애플리케이션 개발용 스펙과 API를 제공한다. Request 당 Thread를 사용하게 된다. 가장 중요한 클래스 중 하나가 HttpServlet이다. Servlet은 웹 프로그래밍에서 클라이언트 요청을 처리하고 처리 결과를 클라이언트에 전송하는 기술이다. CGI(Common gateway Interface) 자바로 구현된 서블릿 등장 전에 사용하던 기술이다. 별도로 제작된 웹 서버와 프로그램간의 교환 방식으로 어떠한 프로그래밍 언어로도 구현이 가능하고 , 별도로 만들어 놓은 프로그램에 HTML의 GET, POST방법으로 클라이언트 데이터를 환경변수로 전달하고 프로그램..

Spring/Spring MVC 2020.11.06